<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>DevOps Pink</title><description>Architecting mass-scale Developer Experience (DX) and enterprise cloud-native adoption. Principal DevRel leadership, zero-friction infrastructure, and institutional ecosystem trust. By Tatiana Mikhaleva.</description><link>https://devops.pink/</link><language>en</language><managingEditor>Tatiana Mikhaleva &lt;connect@devops.pink&gt;</managingEditor><webMaster>Tatiana Mikhaleva &lt;connect@devops.pink&gt;</webMaster><copyright>2026 Tatiana Mikhaleva. All rights reserved.</copyright><image><url>https://devops.pink/images/logos/tatiana-mikhaleva-logo-devops-pink.webp</url><title>DevOps Pink</title><link>https://devops.pink/</link></image><lastBuildDate>Tue, 10 Feb 2026 00:00:00 GMT</lastBuildDate><ttl>60</ttl><atom:link href="https://devops.pink/rss.xml" rel="self" type="application/rss+xml" xmlns:atom="http://www.w3.org/2005/Atom"/><item><title>Stop Lying About Your Backups — Zero-Trust Recovery with Plakar</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Learn how to master Terraform tags for cloud resource management, automation, and cost tracking. Discover best practices, default tags, and merging strategies!</description><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey my DevOps queens (and kings, too)! 👑&lt;/p&gt;
&lt;p&gt;Let&apos;s talk. We need to have a serious heart-to-heart. Put down your coffee, close your tickets, and let&apos;s be real. We need to discuss something uncomfortable. Because I know your secret.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You&apos;re lying.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Every morning, you look at those green backup checkmarks and tell the business:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&quot;We are protected.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But deep down... you&apos;re praying you never have to test that theory. Because you know: &lt;strong&gt;if prod goes down, those checkmarks won&apos;t save you.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s not a strategy — it&apos;s &lt;strong&gt;chronic fear&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Relax. ✨ Today, we are not fixing your services. Today, we are treating your fears. We&apos;re going to get rid of what keeps you up at night. We&apos;ll go through your traumas — point by point — and shut them down.&lt;/p&gt;
&lt;p&gt;And for this, we&apos;ll use &lt;strong&gt;Plakar&lt;/strong&gt;. 🛡️&lt;/p&gt;
&lt;p&gt;It&apos;s &lt;strong&gt;Open Source&lt;/strong&gt;. I know that matters to you. No &lt;em&gt;black boxes.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;import VideoPlayer from &quot;@components/VideoPlayer.astro&quot;;&lt;/p&gt;
&lt;p&gt;&amp;lt;VideoPlayer
videoId=&quot;Su8USwG7tWc&quot;
title=&quot;Stop Lying About Your Backups - DevOps Therapy&quot;
/&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;1. The Fear of Recovery&lt;/h2&gt;
&lt;p&gt;Your first trauma is the &lt;strong&gt;fear of recovery&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We all know the nightmare: you restore the files... but the system doesn&apos;t work. Why? Because standard backups save the data, but they &lt;strong&gt;lose the context&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Permissions are broken&lt;/li&gt;
&lt;li&gt;Timestamps are reset&lt;/li&gt;
&lt;li&gt;Dependencies are gone&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&apos;s pure chaos. You have the pieces, but you lost the picture. Your system has &lt;strong&gt;amnesia&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Plakar is Digital Memory&lt;/h3&gt;
&lt;p&gt;It preserves the &lt;strong&gt;exact state&lt;/strong&gt;: ownership, modes, and extended attributes. The relationships between files remain intact. You simply open Plakar and restore the snapshot — &lt;strong&gt;fast, granular, and reliable&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;2. The Trap of Dependence&lt;/h2&gt;
&lt;p&gt;Let&apos;s move on. You feel &lt;strong&gt;dependent&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You keep everything in the cloud, and you know: if they hike prices tomorrow or lock your account, you can&apos;t get your data out fast. You&apos;re &lt;strong&gt;trapped&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Plakar treats this with &lt;strong&gt;total portability&lt;/strong&gt;. It packs data into a &lt;strong&gt;Kloset&lt;/strong&gt; — a self-contained repository. 📦&lt;/p&gt;
&lt;p&gt;You can keep it on &lt;strong&gt;S3 today&lt;/strong&gt;, and tomorrow replicate snapshots to another &lt;strong&gt;Kloset store&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Local disk&lt;/li&gt;
&lt;li&gt;Another cloud provider&lt;/li&gt;
&lt;li&gt;Wherever you want&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No format conversion. No complex migrations. The data belongs to &lt;strong&gt;you&lt;/strong&gt;, not the infrastructure. &lt;strong&gt;You are free to choose where to live.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;3. Paranoia&lt;/h2&gt;
&lt;p&gt;The third point is &lt;strong&gt;Paranoia&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You send data to the cloud — and often, control over where and how encryption happens isn&apos;t fully yours. You&apos;re forced to &lt;em&gt;take their word for it&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;But what if they get hacked? Or a rogue insider decides to peek at your files? You are handing your secrets to strangers.&lt;/p&gt;
&lt;h3&gt;Client-Side Encryption&lt;/h3&gt;
&lt;p&gt;Plakar does it differently. Data is encrypted &lt;strong&gt;on your end&lt;/strong&gt;, at the source, before it leaves for storage. Nothing readable goes to the cloud.&lt;/p&gt;
&lt;p&gt;To the outside world, it&apos;s just &lt;strong&gt;encrypted chunks&lt;/strong&gt; — meaningless without your keys. You can delegate &lt;em&gt;storage&lt;/em&gt; without delegating &lt;em&gt;access&lt;/em&gt;. The risk of a cloud breach drops sharply.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You are protected.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;4. Budget&lt;/h2&gt;
&lt;p&gt;And finally — &lt;strong&gt;budget&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You look at cloud bills and realize: you&apos;re paying for air. You&apos;re storing 50 copies of the same operating system. You&apos;re paying for the same thing 50 times. Your infrastructure is bloated.&lt;/p&gt;
&lt;h3&gt;Smart Deduplication&lt;/h3&gt;
&lt;p&gt;Plakar cuts out the fat. It breaks files into &lt;strong&gt;chunks&lt;/strong&gt;. If you have a hundred similar servers, repeated chunks aren&apos;t duplicated.&lt;/p&gt;
&lt;p&gt;The result:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drastically smaller storage footprint&lt;/li&gt;
&lt;li&gt;Significantly lower storage bills&lt;/li&gt;
&lt;li&gt;No wasted company money&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And your &lt;strong&gt;CFO will finally be happy.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Prescription&lt;/h2&gt;
&lt;p&gt;Your fears aren&apos;t just &lt;em&gt;&quot;part of the job.&quot;&lt;/em&gt; They are &lt;strong&gt;symptoms of outdated architecture&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You don&apos;t need to learn to live with the pain. You need to &lt;strong&gt;change the tool.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Plakar gives you:&lt;br /&gt;
✅ Predictable recovery&lt;br /&gt;
✅ Independence from clouds&lt;br /&gt;
✅ Real privacy&lt;br /&gt;
✅ Smart savings&lt;/p&gt;
&lt;p&gt;Our session is over for today. Try &lt;strong&gt;&lt;a href=&quot;https://github.com/PlakarKorp/plakar&quot;&gt;Plakar&lt;/a&gt;&lt;/strong&gt; and finally start sleeping peacefully.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>DevSecOps</category><category>Security</category><category>DevOps</category><category>Architecture</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Escaping the Command Line Cartel: Why I Mandate Visual Git in Enterprise DX</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Relying purely on the terminal is a toxic DX dependency. Discover how architecting visual version control with GitKraken eliminates cognitive load, enforces psychological safety, and scales enterprise DevOps.</description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today, I want to talk about the elephant in the server room: the romanticization of the CLI.&lt;/p&gt;
&lt;p&gt;For years, relying purely on the terminal has been worn as a badge of honor in engineering. But if we evaluate it strictly as a Developer Experience (DX) framework, the terminal often behaves like a toxic dependency. We suffer through endless flags, fear pressing &lt;strong&gt;Enter&lt;/strong&gt; on a force push, and accept the massive cognitive drain simply because &lt;em&gt;“that&apos;s how real engineers do it.”&lt;/em&gt; This is gatekeeping, not architecture. True engineering prioritizes safety, speed, and absolute clarity. That&apos;s why I completely overhauled my version control workflow and integrated &lt;strong&gt;GitKraken&lt;/strong&gt; as my primary Git interface.&lt;/p&gt;
&lt;p&gt;Here is the architectural breakdown of why visual DX is fundamentally superior to the terminal.&lt;/p&gt;
&lt;p&gt;import VideoPlayer from &quot;@components/VideoPlayer.astro&quot;;&lt;/p&gt;
&lt;p&gt;&amp;lt;VideoPlayer
videoId=&quot;BGGX3UW4jMM&quot;
title=&quot;GitKraken vs Git CLI: Best Git GUI for DevOps in 2026&quot;
/&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;1. High-Signal Telemetry (Total Honesty)&lt;/h2&gt;
&lt;p&gt;The terminal obscures the narrative. To understand the history of a complex repository, you have to interrogate it with &lt;code&gt;git log&lt;/code&gt; and attempt to visualize the multi-branch commit tree entirely in your head.&lt;/p&gt;
&lt;p&gt;GitKraken provides immediate, high-signal telemetry. The commit graph is visually absolute—every branch, every merge, and every pivot is mapped out in front of you. It&apos;s not just a GUI; it is an auditable, honest map of your engineering truth. You see exactly who did what, and why, without typing a single query.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;2. Tactile Architecture &amp;amp; Frictionless Workflows&lt;/h2&gt;
&lt;p&gt;In the CLI, you are typing abstract spells into a black box. There is a profound disconnect between the command and the architecture.&lt;/p&gt;
&lt;p&gt;GitKraken transforms version control into a tactile experience. If I need to merge or rebase, I don&apos;t rely on rote memorization of syntax. I grab the branch and visually pull it onto another. &lt;strong&gt;Drag. And. Drop.&lt;/strong&gt; It removes the friction between intention and execution, allowing me to interact with the codebase with zero latency.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;3. Adult Conflict Resolution&lt;/h2&gt;
&lt;p&gt;In a standard CLI workflow, resolving a complex merge conflict is an exercise in stress management. The terminal presents a wall of text, and one wrong keystroke can break the build.&lt;/p&gt;
&lt;p&gt;GitKraken reframes this into an analytical, structured conversation with the code. The visual merge conflict editor is a masterclass in DX:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I see my version.&lt;/li&gt;
&lt;li&gt;I see the incoming version.&lt;/li&gt;
&lt;li&gt;I see the output.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A few clicks to select what stays and what goes. No panic. No broken syntax. Just a calm, resolved deployment.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;4. Psychological Safety (The Magic Button)&lt;/h2&gt;
&lt;p&gt;Enterprise infrastructure requires strict guardrails. We all make mistakes, and in the terminal, a bad commit feels catastrophic.&lt;/p&gt;
&lt;p&gt;GitKraken introduces the ultimate layer of psychological safety: the &lt;strong&gt;Undo&lt;/strong&gt; button. If I drop a stash, mess up a rebase, or commit to the wrong branch, I click one button, and the state is perfectly restored. Knowing that I have an immediate rollback mechanism fundamentally shifts how aggressively and confidently I can code.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;5. Ecosystem Interoperability&lt;/h2&gt;
&lt;p&gt;A tool&apos;s value is defined by its ecosystem. GitKraken doesn&apos;t exist in a vacuum; it acts as an interoperability hub.&lt;/p&gt;
&lt;p&gt;It natively integrates with Jira, GitHub, and GitLab, centralizing the context so I don&apos;t have to jump between ten different browser tabs. More importantly, through &lt;strong&gt;GitLens in VS Code&lt;/strong&gt;, the visual context follows me directly into my IDE. It provides inline telemetry—showing exactly who authored a line and when—quietly providing context right when I need it.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Executive Verdict&lt;/h2&gt;
&lt;p&gt;Beautiful, intuitive, and relentlessly efficient. It handles merge conflicts visually, integrates seamlessly across the enterprise stack, and actively mitigates human error.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Does your terminal do that?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you are ready to stop fighting your tools and upgrade your Developer Experience, use my strategic alliance link below to deploy GitKraken.&lt;/p&gt;
&lt;p&gt;🦑 &lt;strong&gt;&lt;a href=&quot;https://gitkraken.cello.so/an1FhNXzY8k&quot;&gt;Deploy GitKraken Pro (50% Executive Subsidy) -&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Join the conversation in the &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Discord Syndicate&lt;/a&gt;&lt;/strong&gt;: are you staying loyal to the terminal, or are you ready to upgrade your architecture?&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Git</category><category>Developer Experience</category><category>Version Control</category><category>Best Practices</category><category>Architecture</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Kubernetes Is No Longer Number One — The REAL 2025 Cloud Native Report (CNCF x SlashData)</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Kubernetes is no longer number one. The 2025 CNCF x SlashData report reveals the real cloud-native trends — backend growth, DevOps adoption, AI gaps, and the technologies developers actually use.</description><pubDate>Sun, 30 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey my cloud-native queens, kings, and everyone shipping to production in between.&lt;/p&gt;
&lt;p&gt;In this article, we&apos;re going to walk through the key facts from the 2025 “State of Cloud Native” &lt;a href=&quot;https://www.cncf.io/wp-content/uploads/2025/11/cncf_report_stateofcloud_111025a.pdf&quot;&gt;report by CNCF and SlashData&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here&apos;s the main spoiler: &lt;strong&gt;Kubernetes is NO LONGER the most interesting number.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While everyone&apos;s chasing K8s, the real action is somewhere else.&lt;/p&gt;
&lt;p&gt;This data is based on &lt;strong&gt;over 12,000 developers from 128 countries&lt;/strong&gt;, collected between June and July 2025, with a breakdown by role: backend, DevOps, ML/AI, IoT, and games.&lt;/p&gt;
&lt;p&gt;Let&apos;s get straight to the facts.&lt;/p&gt;
&lt;p&gt;import VideoPlayer from &quot;@components/VideoPlayer.astro&quot;;&lt;/p&gt;
&lt;p&gt;&amp;lt;VideoPlayer
videoId=&quot;tBK5rA8xvTc&quot;
title=&quot;Kubernetes Is No Longer 1 — The REAL 2025 Cloud Native Report (CNCF x SlashData)&quot;
/&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Finding Number One: Backend won&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;56% of backend developers are now cloud native.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In absolute numbers, that&apos;s &lt;strong&gt;15.6 million cloud-native developers&lt;/strong&gt;, and &lt;strong&gt;9.3 million of them are backend&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Why does this matter?
Because backend teams carry the weight for APIs, observability, microservices, CI/CD, and service ownership.&lt;/p&gt;
&lt;p&gt;If you&apos;re building a platform, build it for backend and DevOps — not for “everyone in general”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Backend + DevOps is the new core of the cloud-native community.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Finding Number Two: AI is not that cloud native&lt;/h2&gt;
&lt;p&gt;You might expect AI/ML to be all-in on the cloud and GPUs — but &lt;strong&gt;only 41% of ML/AI professionals are cloud native.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One big reason, according to the report, is the heavy use of MLaaS — managed services that abstract away the underlying infrastructure.&lt;/p&gt;
&lt;p&gt;AI models keep scaling, but the classic DevOps discipline — logs, versioning, deployments — often lags behind.&lt;/p&gt;
&lt;p&gt;For DevOps, SREs, and Platform Engineers, that&apos;s a huge window of opportunity:
bring proper engineering hygiene into MLOps — real pipelines, versioned environments, logs, and managed clusters.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Finding Number Three: What&apos;s really being used&lt;/h2&gt;
&lt;p&gt;The most widely used cloud-native technologies are not exotic at all. They&apos;re very down-to-earth:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API gateways — &lt;strong&gt;50%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Microservices — &lt;strong&gt;46%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Kubernetes — &lt;strong&gt;28%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Observability — &lt;strong&gt;28%&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Observability (28%) has now &lt;strong&gt;caught up to Kubernetes (28%)&lt;/strong&gt;.
“Just running it” is no longer enough — everyone understands you have to &lt;strong&gt;see&lt;/strong&gt; what&apos;s going on, too.&lt;/p&gt;
&lt;p&gt;And then there&apos;s service mesh: &lt;strong&gt;8%.&lt;/strong&gt; Eight percent.
The hype made it sound like 80.&lt;/p&gt;
&lt;p&gt;So the world isn&apos;t living in “service mesh everywhere”. It&apos;s living in:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;just give me a solid gateway, logs, and orchestration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you&apos;re building a product for DevOps, aim for this reality — not for super-exotic architectures almost nobody runs.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What to do with this data&lt;/h2&gt;
&lt;p&gt;If you&apos;re an architect, a DevOps team lead, or building a platform, here&apos;s what this report is really telling you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Go backend- and DevOps-first.&lt;/strong&gt;
These two groups are the most cloud-native in the report. This is where you bring IDPs, artifact repositories, and policy-as-code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Support hybrid.&lt;/strong&gt;
30% of all developers are on hybrid cloud, 23% are multi-cloud. Your networking, secrets, and observability need to span everything, not just a single provider.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bring ML teams up to code.&lt;/strong&gt;
If you have ML folks in-house, give them the same level of engineering hygiene as your production teams: versioned environments, pipelines, logs, clusters, and proper deployments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Don&apos;t over-engineer.&lt;/strong&gt;
The mainstream stack is this combo: API gateways, microservices, Kubernetes, plus observability — not some universal service mesh everywhere. This is a mature, understandable stack where you can actually ship and make money.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Final verdict&lt;/h2&gt;
&lt;p&gt;Cloud native is now mainstream for backend and DevOps — and AI is just playing catch-up.&lt;/p&gt;
&lt;p&gt;How does this look in your company or team?
Do these numbers match your reality, or is your stack going in a different direction?&lt;/p&gt;
&lt;p&gt;Share your experience in the comments — I&apos;m genuinely curious to see how this data maps to real life.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Kubernetes</category><category>Cloud Computing</category><category>Backend</category><category>DevOps</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Amazon Q - The AI DevOps Tool That Fixes AWS Headaches</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Amazon Q is AWS&apos;s AI assistant that helps DevOps engineers fix cloud issues faster with smart, context-aware insights and automation.</description><pubDate>Mon, 10 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;You know that feeling when something breaks in AWS and no one knows why?&lt;/p&gt;
&lt;p&gt;Yeah - today&apos;s post is about fixing that.&lt;/p&gt;
&lt;p&gt;import VideoPlayer from &quot;@components/VideoPlayer.astro&quot;;&lt;/p&gt;
&lt;p&gt;&amp;lt;VideoPlayer
videoId=&quot;4Ke8eQWKfzs&quot;
title=&quot;Amazon Q - The AI DevOps Tool That Fixes AWS Headaches&quot;
/&amp;gt;&lt;/p&gt;
&lt;h2&gt;Meet Amazon Q&lt;/h2&gt;
&lt;p&gt;An AI assistant, built right into AWS. Marketed as your new cloud teammate.&lt;/p&gt;
&lt;p&gt;But it&apos;s not just here to chat. It&apos;s here to help.&lt;/p&gt;
&lt;p&gt;Not “Hello, World,” but more like:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Why does your IAM keep blocking Lambda again?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It looks at your setup. Your permissions. Your infrastructure.&lt;/p&gt;
&lt;p&gt;It&apos;s like having a senior AWS engineer trapped inside your console - and you get to say:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Please explain why nothing works. Again.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And honestly? Sometimes it&apos;s more helpful than that coworker who answers three days later… and still not on topic.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;How It Works in Real Life&lt;/h2&gt;
&lt;p&gt;Sounds great, right? But how does it look in real life?&lt;/p&gt;
&lt;p&gt;Here are a few examples everyone who&apos;s touched AWS will recognize.&lt;/p&gt;
&lt;h3&gt;Example 1: The Silent Lambda&lt;/h3&gt;
&lt;p&gt;You try to run a Lambda - nothing happens.&lt;/p&gt;
&lt;p&gt;No errors. No logs. Just… silence.&lt;/p&gt;
&lt;p&gt;You start guessing: wrong trigger? Bad permissions?&lt;/p&gt;
&lt;p&gt;Q checks your config, IAM, event sources - and says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Missing permission here. Add this - and you&apos;re good to go.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Example 2: Building a VPC&lt;/h3&gt;
&lt;p&gt;You want to spin up a VPC with NAT and two subnets.&lt;/p&gt;
&lt;p&gt;Normally: 30 minutes of Googling and a hundred lines of YAML-induced headache.&lt;/p&gt;
&lt;p&gt;Q just says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Here&apos;s the template. One click - done.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Example 3: Route 53 DNS Setup&lt;/h3&gt;
&lt;p&gt;Need to configure DNS in Route 53.&lt;/p&gt;
&lt;p&gt;You open the console and feel like it&apos;s day one in AWS.&lt;/p&gt;
&lt;p&gt;Q doesn&apos;t throw 10 outdated forum links at you - it explains what to do, why it matters, and helps you understand the steps - though you&apos;ll still need to describe your setup.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Who Amazon Q Helps&lt;/h2&gt;
&lt;p&gt;Q helps not only those drowning in IAM configs or forgetting how to YAML.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New to AWS? Q will explain where you got stuck - and why.&lt;/li&gt;
&lt;li&gt;Experienced? It&apos;ll save you a couple of hours a day.&lt;/li&gt;
&lt;li&gt;Working in a team? Fewer sync calls. More releases. Less pain.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Q&apos;s always got your back.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;ChatGPT vs Amazon Q&lt;/h2&gt;
&lt;p&gt;But what about ChatGPT? It knows everything too, right?&lt;/p&gt;
&lt;p&gt;Well… not your account. ChatGPT gives you theory. Q gives you context.&lt;/p&gt;
&lt;p&gt;It&apos;s like giving ChatGPT access to your AWS console - and saying:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Just don&apos;t break anything.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;A Few Things to Keep in Mind&lt;/h2&gt;
&lt;p&gt;Still, there are a few things to keep in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Some features are still in Preview&lt;/li&gt;
&lt;li&gt;It&apos;s not available in every region yet - but works in &lt;code&gt;us-east-1&lt;/code&gt;, &lt;code&gt;us-west-2&lt;/code&gt;, and &lt;code&gt;eu-central-1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Complex setup? You&apos;ll still need to get hands-on&lt;/li&gt;
&lt;li&gt;Working with Terraform or other IaC? Q works best in your editor or CLI, not just clicking around in the console&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;But here&apos;s the deal:&lt;/p&gt;
&lt;p&gt;This is the first AI tool that actually helps DevOps engineers - not with theory, but with real, practical answers.&lt;/p&gt;
&lt;p&gt;And not just for those who read AWS docs like bedtime stories. Q gets things done.&lt;/p&gt;
&lt;p&gt;So now there&apos;s only one question:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Will you try it - or keep debugging IAM on Saturdays?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;Join the Conversation&lt;/h2&gt;
&lt;p&gt;If you found this article helpful - give it a share 😄&lt;/p&gt;
&lt;p&gt;Subscribe if you want more DevOps, cloud, and automation content - and join our Discord (link&apos;s in the description).&lt;/p&gt;
&lt;p&gt;And tell me in the comments:&lt;br /&gt;
&lt;strong&gt;What&apos;s the one AWS thing that always trips you up?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Maybe Q already knows how to fix it 😉&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>AI &amp; MLOps</category><category>AWS</category><category>DevOps</category><category>AI</category><category>Amazon Q</category><category>Cloud</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Inside Helm - How Charts, Releases, and State Work in Kubernetes</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Learn how Helm really works under the hood — charts, releases, and Kubernetes state management explained in plain DevOps language.</description><pubDate>Sun, 09 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Hey my DevOps queens (and kings, too)!&lt;/strong&gt; 👑&lt;/p&gt;
&lt;p&gt;If you&apos;ve ever deployed an app to Kubernetes and thought, “Wait… what actually happens after I type &lt;code&gt;helm install&lt;/code&gt;?” — this one&apos;s for you.&lt;/p&gt;
&lt;p&gt;Helm makes Kubernetes deployments look easy. But behind the scenes, it&apos;s doing a lot more than just rendering YAML files. It&apos;s a &lt;strong&gt;stateful release manager&lt;/strong&gt; that tracks every change, stores versioned state &lt;strong&gt;inside your cluster&lt;/strong&gt;, and handles upgrades intelligently — no external database required.&lt;/p&gt;
&lt;p&gt;Today, let&apos;s pull back the curtain and see how Helm actually works: how charts are structured, where your release data lives, and how Helm keeps everything consistent and versioned like a pro.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What&apos;s Inside a Helm Chart&lt;/h2&gt;
&lt;p&gt;A Helm chart is a package that describes how your app should be deployed to Kubernetes. It&apos;s structured, predictable, and — if you do it right — beautifully reusable.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;my-chart/
  Chart.yaml              # metadata (name, version, dependencies, etc.)
  values.yaml             # default configuration values
  templates/              # Go templates for Kubernetes manifests
    _helpers.tpl          # reusable named templates and functions
  charts/                 # subcharts (dependencies)
  files/                  # arbitrary files used in templates
  crds/                   # CustomResourceDefinitions (installed first)
  .helmignore             # like .gitignore for packaging
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Think of it as your app blueprint — flexible through &lt;code&gt;values.yaml&lt;/code&gt; and easily overridden at deploy time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; CRDs in the &lt;code&gt;crds/&lt;/code&gt; directory are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;installed &lt;strong&gt;first&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;not templated&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;and &lt;strong&gt;never upgraded or deleted&lt;/strong&gt; — this protects existing Custom Resources and data.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;What Actually Happens When You Run helm install&lt;/h2&gt;
&lt;p&gt;Let&apos;s break it down. When you run &lt;code&gt;helm install&lt;/code&gt;, Helm doesn&apos;t just “apply some YAML.” It follows a clear sequence:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Loads&lt;/strong&gt; the chart (local or remote).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Merges values&lt;/strong&gt; from multiple sources:
&lt;ul&gt;
&lt;li&gt;base &lt;code&gt;values.yaml&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;any additional files: &lt;code&gt;-f base.yaml -f prod.yaml&lt;/code&gt; (left-to-right; later overrides earlier);&lt;/li&gt;
&lt;li&gt;inline flags: &lt;code&gt;--set&lt;/code&gt;, &lt;code&gt;--set-string&lt;/code&gt;, &lt;code&gt;--set-file&lt;/code&gt;, &lt;code&gt;--set-json&lt;/code&gt; (these always take precedence).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Renders&lt;/strong&gt; Go templates into complete Kubernetes manifests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Applies&lt;/strong&gt; them to the cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On a clean install, Helm creates the resources.&lt;/p&gt;
&lt;p&gt;If resources already exist and contain the correct Helm annotations (&lt;code&gt;meta.helm.sh/*&lt;/code&gt;, &lt;code&gt;app.kubernetes.io/managed-by=Helm&lt;/code&gt;), Helm will &lt;em&gt;adopt&lt;/em&gt; them. Otherwise, you&apos;ll see:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Error: invalid ownership metadata
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;During &lt;strong&gt;upgrades&lt;/strong&gt; or &lt;strong&gt;rollbacks&lt;/strong&gt;, Helm performs a &lt;strong&gt;three-way strategic merge&lt;/strong&gt; — comparing the previous manifest, the new manifest, and the current cluster state — handled client-side through &lt;code&gt;client-go&lt;/code&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Where Helm Stores Release State&lt;/h2&gt;
&lt;p&gt;Every Helm release is stored &lt;strong&gt;inside your cluster&lt;/strong&gt;. No external DBs, no magic.&lt;/p&gt;
&lt;p&gt;By default, Helm saves release info in a Kubernetes &lt;strong&gt;Secret&lt;/strong&gt;, though you can switch to a &lt;strong&gt;ConfigMap&lt;/strong&gt; or &lt;strong&gt;SQL&lt;/strong&gt; driver (PostgreSQL).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Default object structure:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;kind: Secret
type: helm.sh/release.v1
metadata:
  name: sh.helm.release.v1.&amp;lt;release&amp;gt;.v&amp;lt;revision&amp;gt;
  namespace: &amp;lt;release-namespace&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;.data.release&lt;/code&gt; field contains a base64-encoded, gzip-compressed blob with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;strong&gt;chart archive&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;rendered manifests,&lt;/li&gt;
&lt;li&gt;merged values,&lt;/li&gt;
&lt;li&gt;hooks,&lt;/li&gt;
&lt;li&gt;and release metadata (revision, timestamps, status).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because Secret data is base64-encoded by Kubernetes — and the release payload also includes encoded sections — the result is effectively &lt;em&gt;nested encoding&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Heads up:&lt;/strong&gt; etcd enforces a ~1 MiB limit for Secret data. If you hit:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Too long: must have at most 1048576 characters
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;switch to SQL storage:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export HELM_DRIVER=sql
export HELM_DRIVER_SQL_CONNECTION_STRING=postgresql://user:pass@host/db
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Labels and Annotations&lt;/h2&gt;
&lt;p&gt;Helm labels everything it manages to track ownership precisely.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Added automatically:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;app.kubernetes.io/managed-by=Helm
meta.helm.sh/release-name=&amp;lt;release-name&amp;gt;
meta.helm.sh/release-namespace=&amp;lt;namespace&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Best-practice labels&lt;/strong&gt; (usually added by chart templates):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;app.kubernetes.io/instance=&amp;lt;release-name&amp;gt;
helm.sh/chart=&amp;lt;chart-name&amp;gt;-&amp;lt;version&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If these don&apos;t match during an upgrade, Helm will refuse ownership — hence the classic &lt;code&gt;invalid ownership metadata&lt;/code&gt; error.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What Is a Helm Release?&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;release&lt;/strong&gt; is one installed instance of a chart with a specific set of values (in a namespace).&lt;/p&gt;
&lt;p&gt;Each change — install, upgrade, rollback — becomes a &lt;strong&gt;new revision&lt;/strong&gt; stored right in your cluster. No external database. No API extension. Just Kubernetes objects doing their job.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Three-Way Merge Explained&lt;/h2&gt;
&lt;p&gt;When you upgrade, Helm compares:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;strong&gt;previous&lt;/strong&gt; rendered manifest,&lt;/li&gt;
&lt;li&gt;the &lt;strong&gt;new&lt;/strong&gt; manifest (after your changes),&lt;/li&gt;
&lt;li&gt;the &lt;strong&gt;current live&lt;/strong&gt; resources.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then it calculates a &lt;strong&gt;three-way strategic merge patch&lt;/strong&gt; and applies only what changed — reducing disruption and preserving manual tweaks where possible.&lt;/p&gt;
&lt;p&gt;:::note
This logic runs &lt;strong&gt;client-side&lt;/strong&gt;, not via Server-Side Apply. For CRDs or unstructured resources, Kubernetes uses JSON merge-patch, which can behave slightly differently.
:::&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Namespaces: Release vs Target&lt;/h2&gt;
&lt;p&gt;Helm separates namespaces into two categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Release namespace&lt;/strong&gt; — where Helm stores its Secret or ConfigMap.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Target namespaces&lt;/strong&gt; — where chart resources are deployed (can be multiple).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--create-namespace&lt;/code&gt; only creates the &lt;strong&gt;release namespace&lt;/strong&gt; (the one you pass with &lt;code&gt;--namespace&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your chart deploys across namespaces, create them manually or template them inside your chart.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Avoid hardcoding &lt;code&gt;metadata.namespace&lt;/code&gt; unless you really need to — otherwise &lt;code&gt;helm template | kubectl apply&lt;/code&gt; might push resources to &lt;code&gt;default&lt;/code&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Storage Drivers&lt;/h2&gt;
&lt;p&gt;Helm supports multiple backends for storing release state:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export HELM_DRIVER=secret      # default (encoded, secure)
export HELM_DRIVER=configmap   # readable, not encrypted
export HELM_DRIVER=sql         # PostgreSQL – best for large releases
export HELM_DRIVER=memory      # ephemeral, for tests only
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Managing Release History&lt;/h2&gt;
&lt;p&gt;Helm keeps &lt;strong&gt;all revisions&lt;/strong&gt; unless you limit it. You can cap history like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm upgrade --history-max 10 ...
export HELM_MAX_HISTORY=10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Explore release history anytime:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm history &amp;lt;release&amp;gt;
helm get values &amp;lt;release&amp;gt;
helm get manifest &amp;lt;release&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;Helm isn&apos;t magic — it&apos;s clean engineering. Behind every &lt;code&gt;helm install&lt;/code&gt;, it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;loads, merges, and renders templates,&lt;/li&gt;
&lt;li&gt;stores state inside your cluster,&lt;/li&gt;
&lt;li&gt;tags resources for ownership tracking,&lt;/li&gt;
&lt;li&gt;applies &lt;strong&gt;three-way strategic merges&lt;/strong&gt; on upgrade,&lt;/li&gt;
&lt;li&gt;manages revisions — all with &lt;strong&gt;zero external dependencies&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once you understand how Helm really works, it stops feeling mysterious and starts feeling like your favorite DevOps assistant.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Quick Debug Tip&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm ls -A
kubectl get secrets -A -l &quot;owner=helm&quot; -l &quot;status=deployed&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Perfect for quick audits or just checking what Helm has been managing lately.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Kubernetes</category><category>Helm</category><category>DevOps</category><category>IaC</category><category>Cloud</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Git Merge Conflicts for Beginners - What to Do When Your Branches Have Beef</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Learn how to fix Git merge conflicts step-by-step. A fun, beginner-friendly guide to resolving and avoiding conflict errors in your branches.</description><pubDate>Mon, 14 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey queens! ✨&lt;/p&gt;
&lt;p&gt;Okay, so picture this: you&apos;ve been hustling for days on a sick new feature in your own cozy little branch. The code is flawless, everything works perfectly, and you&apos;re ready to share your masterpiece with the world (or, you know, the main branch). You proudly type out that magic &lt;code&gt;git merge&lt;/code&gt; command and… oops! 😬&lt;/p&gt;
&lt;p&gt;Git literally screams at you: &quot;CONFLICT! I have no idea what to keep!&quot;
Sound familiar? The first instinct is full-on panic mode. You just want to slam your laptop shut and pretend it never happened. But wait! Don&apos;t freak out. We&apos;re gonna walk through this together, and I&apos;ll spill all the tea.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Wait, What Even Is &lt;code&gt;git merge&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;Let&apos;s break it down. When you&apos;re working on a project, you create branches, which are basically parallel universes for your code. You can do whatever you want in your own branch without messing up the main project. It&apos;s your personal creative space.&lt;/p&gt;
&lt;p&gt;And &lt;code&gt;git merge&lt;/code&gt; is the command that brings your universe back into the main timeline.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git checkout main
git merge feature/new-login
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is literally you telling Git, &quot;Hey, take all the awesome stuff I built in &lt;code&gt;feature/new-login&lt;/code&gt; and add it to the main branch, please!&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;When It&apos;s a Buttery-Smooth Ride&lt;/h2&gt;
&lt;h3&gt;(The Fast-Forward Merge)&lt;/h3&gt;
&lt;p&gt;If you and your teammates were working on totally different files, Git is a total genius. It will seamlessly combine everything on its own, and you won&apos;t even notice. Pure magic! ✨&lt;/p&gt;
&lt;p&gt;Technically, this is called a &lt;strong&gt;Fast-Forward Merge&lt;/strong&gt;. It happens when the &lt;code&gt;main&lt;/code&gt; branch hasn&apos;t had any new commits since you created your branch. Git just &quot;fast-forwards&quot; the main pointer to include all your new commits.&lt;/p&gt;
&lt;p&gt;Sometimes, to keep a clear history, developers force Git to create a merge &quot;knot&quot; even when it could fast-forward. This is done with:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git merge --no-ff feature/new-login
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;…and it leaves a nice little note in the project history saying, &quot;This feature was merged right here.&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;When Git Has a Meltdown (aka a Conflict)&lt;/h2&gt;
&lt;p&gt;A conflict happens when you and someone else (or even you in a different branch) changed the exact same line of code in different ways. Git gets totally overwhelmed. It looks at the two versions and can&apos;t decide which one is right. It&apos;s basically looking at you like, &quot;OMG, girl, I can&apos;t decide. You have to choose!&quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What This Hot Mess Looks Like in Your Code&lt;/h2&gt;
&lt;p&gt;You open the file, and boom — Git greets you with something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD
The version of the code from the main branch
=======
The version of the code from your new feature/new-login branch
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feature/new-login
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Don &apos;t panic!&lt;/p&gt;
&lt;p&gt;This isn &apos;t an error — it &apos;s Git &apos;s way of saying:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&quot;Hey, I found two different versions of this code and I don &apos;t know which one to keep. Can you help me out?&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here &apos;s what those weird lines mean:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD&lt;/code&gt;&lt;/strong&gt; - This is what &apos;s currently in your &lt;code&gt;main&lt;/code&gt; branch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;=======&lt;/code&gt;&lt;/strong&gt; - This line separates the two versions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feature/new-login&lt;/code&gt;&lt;/strong&gt; - And this is the version coming from your branch.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Okay, So How Do I Fix This? A Step-by-Step Guide!&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Breathe!&lt;/strong&gt; You&apos;ve got this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analyze the code.&lt;/strong&gt; Take a look at both versions. Which one do you need? Maybe you need a little bit of both? The final decision is all yours.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edit the file.&lt;/strong&gt; Just delete the code you don&apos;t want and leave only the code that should be there.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Delete the markers.&lt;/strong&gt; You have to get rid of the &lt;code&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;/code&gt;, &lt;code&gt;=======&lt;/code&gt;, and &lt;code&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt; lines. They&apos;ve served their purpose.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Save the file.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And that&apos;s it! The conflict in the code is officially resolved.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Final Steps: Letting Git Know You&apos;re a Genius&lt;/h2&gt;
&lt;p&gt;Now you just have to tell Git that you&apos;ve handled it and everything is okay:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tell Git you&apos;ve resolved the conflict in this file&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git add &amp;lt;filename&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Finalize the merge with a commit&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git commit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Git will usually pop up a pre-written commit message for you. You can totally just use that.&lt;/p&gt;
&lt;p&gt;And you&apos;re done! The merge is complete, and your amazing new feature is safe and sound in the main branch! 🎉&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;SOS! What If I Messed Everything Up?&lt;/h2&gt;
&lt;p&gt;If you started fixing a conflict and suddenly realized you&apos;re in way over your head, don&apos;t worry! There&apos;s an escape button:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git merge --abort
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This command will completely cancel the merge, like it never even happened. Your project will go right back to how it was before you started. You can take a breath and try again when you&apos;re ready.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;How to Vibe with merge and Avoid Conflicts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Always stay updated!&lt;/strong&gt; Before you start working on a new feature, always update your &lt;strong&gt;main&lt;/strong&gt; branch. The safest way is a two-step: run &lt;strong&gt;git fetch&lt;/strong&gt; (which just downloads the latest changes without touching your code) and then &lt;strong&gt;git merge origin/main&lt;/strong&gt; (to apply those changes). This seriously lowers the chances of a conflict.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stay in your own lane.&lt;/strong&gt; If you can, try to work on different files than your teammates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Communicate!&lt;/strong&gt; This is the biggest one. Actually talk to your team about who&apos;s working on what. A good convo is the key to a conflict-free life.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;The Takeaway&lt;/h2&gt;
&lt;p&gt;Git conflicts are not the end of the world. They&apos;re totally normal. It doesn&apos;t mean you&apos;re a bad developer. It&apos;s just Git&apos;s way of saying, &quot;Hey! I&apos;ve got two different things here—can you help me choose?&quot;&lt;/p&gt;
&lt;p&gt;And now you know exactly how to help. Honestly? You&apos;re already one step closer to feeling like a total pro in Git.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keep coding, girl! You&apos;re killing it! 💖&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>Guides &amp; Tutorials</category><category>Git</category><category>Version Control</category><category>Troubleshooting</category><category>Beginners</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Git Branches - How to Not Break Prod and Stay Alive</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Learn Git branches the modern way. A clear 2025 guide to branching, merging, rebasing, and collaborating—without breaking production.</description><pubDate>Mon, 16 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey queens. You&apos;re building stuff. Pushing code. Shipping features.&lt;/p&gt;
&lt;p&gt;And then someone says:&lt;/p&gt;
&lt;p&gt;“Just create a branch for that.”&lt;/p&gt;
&lt;p&gt;Wait — a what?&lt;/p&gt;
&lt;p&gt;Let&apos;s be real. Git can feel like sorcery at first. Branches? Rebases? Merge commits? Upstream what?&lt;/p&gt;
&lt;p&gt;But here&apos;s the truth:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Branches are not scary.&lt;/strong&gt; They&apos;re your safety net. Your creative zone. Your undo button.&lt;/p&gt;
&lt;p&gt;They let you try bold things without risking production.&lt;/p&gt;
&lt;p&gt;They help teams build fast — and stay sane.&lt;/p&gt;
&lt;p&gt;This guide breaks it down, step by step.&lt;/p&gt;
&lt;p&gt;No buzzwords. No hand-waving. Just real Git, the way developers actually use it in 2025.&lt;/p&gt;
&lt;p&gt;Let&apos;s start from the core idea — what even is a branch?&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What&apos;s a Branch, Really?&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;branch&lt;/strong&gt; is a pointer (a variable) that references a commit.&lt;/p&gt;
&lt;p&gt;In practice, it&apos;s a parallel version of your codebase where you can work safely — nothing affects &lt;code&gt;main&lt;/code&gt; until you decide it&apos;s ready.&lt;/p&gt;
&lt;p&gt;Branches give you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;freedom to experiment,&lt;/li&gt;
&lt;li&gt;a clean commit history,&lt;/li&gt;
&lt;li&gt;protection from disaster,&lt;/li&gt;
&lt;li&gt;and a solid setup for teamwork.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;How to Work with Branches - Step by Step&lt;/h2&gt;
&lt;h3&gt;1. Create a New Branch and Switch to It&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Modern way (Git ≥ 2.23):&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git switch -c feature/signup
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;switch&lt;/code&gt; is a modern, more readable alternative to &lt;code&gt;checkout&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c&lt;/code&gt; means “create a new branch.”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Classic way (still valid):&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git checkout -b feature/signup
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🧭 &lt;strong&gt;Tip:&lt;/strong&gt; Use meaningful, kebab-case names with prefixes like: &lt;code&gt;feature/signup&lt;/code&gt;, &lt;code&gt;bugfix/fix-login&lt;/code&gt;, &lt;code&gt;hotfix/crash-on-submit&lt;/code&gt;, &lt;code&gt;release/v1.3.0&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;2. Do Some Work: Commit &amp;amp; Push&lt;/h3&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo &quot;Sign-up logic&quot; &amp;gt; signup.js
git add signup.js
git commit -m &quot;Add sign-up logic&quot;
git push -u origin feature/signup
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-u&lt;/code&gt; sets the upstream branch so future &lt;code&gt;git push&lt;/code&gt; and &lt;code&gt;git pull&lt;/code&gt; work without arguments.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;📌 After this, you can simply use &lt;code&gt;git push&lt;/code&gt; and &lt;code&gt;git pull&lt;/code&gt; without specifying branch names.&lt;/p&gt;
&lt;h3&gt;3. See What Branch You&apos;re In&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git branch
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;The current branch is marked with a &lt;code&gt;*&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To create a branch without switching:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git branch feature/experiment
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Quick jump back to the previous branch:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git switch -
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Super handy when jumping between &lt;code&gt;main&lt;/code&gt; and a feature branch.&lt;/p&gt;
&lt;h3&gt;4. Switch Back to main and Update It&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git switch main
git pull --ff-only origin main
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🧭 &lt;strong&gt;Important:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run this from the &lt;code&gt;main&lt;/code&gt; branch.&lt;/li&gt;
&lt;li&gt;If you have local commits, Git will stop politely — preventing accidental overwrites.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5. Merge Your Branch into main&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Standard merge:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git merge feature/signup
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If &lt;code&gt;main&lt;/code&gt; hasn&apos;t changed since you branched off, Git performs a fast-forward — just moves the pointer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Want to preserve a visible merge commit?&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git merge --no-ff feature/signup
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🧭 Great for tracking feature branches in project history or pull requests.&lt;/p&gt;
&lt;h3&gt;6. Handling Merge Conflicts&lt;/h3&gt;
&lt;p&gt;If Git reports a conflict:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Open the file and look for:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD
code from main
=======
code from your branch
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feature/signup
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Manually fix the file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stage the resolved file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git add filename
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If a real merge happened (not fast-forward), finish with:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git commit
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;💡 If it was fast-forward, Git already did everything — no commit needed.&lt;/p&gt;
&lt;h3&gt;7. Delete the Branch&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Locally:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git branch -d feature/signup
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If the branch hasn&apos;t been merged yet, use:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git branch -D feature/signup
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Remotely:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git push origin --delete feature/signup
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 An alternative is:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git push origin :feature/signup
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;—but it&apos;s less readable.&lt;/p&gt;
&lt;h3&gt;8. View Branch History Visually&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git log --oneline --graph --decorate --all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This shows your full commit tree, across all branches — clean and visual.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Merge vs Rebase: When and Why&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;merge&lt;/code&gt; preserves full history and creates a merge commit.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rebase&lt;/code&gt; rewrites your branch history to make it look like you started from the latest &lt;code&gt;main&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To rebase:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git fetch origin
git rebase origin/main
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🧭 &lt;strong&gt;Only rebase private branches.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If someone else has pulled your branch — do not rebase unless the team agrees.&lt;/p&gt;
&lt;p&gt;If you must force-push after a rebase, never use &lt;code&gt;--force&lt;/code&gt; directly. Use:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git push --force-with-lease
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✅ This makes Git check that nobody has pushed since your last pull — safer for teams.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Suggested Team Workflow&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Start a feature branch from &lt;code&gt;main&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git switch -c feature/add-login
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Work, commit, push:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git push -u origin feature/add-login
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open a pull request on GitHub/GitLab for review and CI checks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Once approved, merge it — ideally with &lt;code&gt;--no-ff&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Delete the branch locally and on the remote.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Keep &lt;code&gt;main&lt;/code&gt; clean and always production-ready.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;Working with Remotes&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Task&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Command&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Push and set upstream&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git push -u origin feature/branch&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pull updates with rebase&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git pull --rebase origin main&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete branch on remote&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git push origin --delete feature/branch&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clean up remote branch refs&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git fetch --prune&lt;/code&gt; or &lt;code&gt;git remote prune origin&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Safe force-push after rebase&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git push --force-with-lease&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;📌 Make pruning automatic:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git config --global fetch.prune true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Make rebase your default pull strategy:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git config --global pull.rebase true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or do it manually per pull:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git pull --rebase
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Keeps your history linear and avoids noisy merge commits.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Command Cheat Sheet&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Action&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Command&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Create + switch to new branch&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git switch -c feature/branch&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switch branches&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git switch branch-name&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create branch without switching&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git branch branch-name&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;See all branches&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git branch&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jump to previous branch&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git switch -&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Update main before merge&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git switch main &amp;amp;&amp;amp; git pull --ff-only origin main&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Merge branch&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git merge feature/branch&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Merge with visible history&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git merge --no-ff feature/branch&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rebase feature onto latest main&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git rebase origin/main&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete local branch&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git branch -d branch-name&lt;/code&gt; or &lt;code&gt;-D&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete remote branch&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git push origin --delete branch-name&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visualize all history&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git log --oneline --graph --decorate --all&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Safe force-push after rebase&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git push --force-with-lease&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clean deleted remotes automatically&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git config --global fetch.prune true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use rebase by default on pull&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git config --global pull.rebase true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Best Practices (And Why They Matter)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;One branch per task&lt;/strong&gt;&lt;br /&gt;
Keeps changes isolated, focused, and easy to review.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use clear, consistent naming&lt;/strong&gt;&lt;br /&gt;
Prefixes like &lt;code&gt;feature/&lt;/code&gt;, &lt;code&gt;fix/&lt;/code&gt;, &lt;code&gt;release/&lt;/code&gt; help.&lt;br /&gt;
Use lowercase + hyphens: &lt;code&gt;feature/add-login&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use pull requests&lt;/strong&gt;&lt;br /&gt;
Code reviews, CI checks, and visibility improve code quality.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Avoid &lt;code&gt;--force&lt;/code&gt; — use &lt;code&gt;--force-with-lease&lt;/code&gt;&lt;br /&gt;
Don&apos;t overwrite others&apos; work by mistake.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Clean up your branches&lt;/strong&gt;&lt;br /&gt;
Remove them when they&apos;re done — both locally and on remote.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Only rebase private branches&lt;/strong&gt;&lt;br /&gt;
Never rewrite history others rely on.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;Git branches aren&apos;t just a tool — they&apos;re a mindset.&lt;/p&gt;
&lt;p&gt;They give you a safe space to build, break, and experiment — without breaking production.&lt;/p&gt;
&lt;p&gt;With branches, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;isolate ideas,&lt;/li&gt;
&lt;li&gt;collaborate without chaos,&lt;/li&gt;
&lt;li&gt;and build with confidence.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Branch = creativity&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Main = stability&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;You = the developer who keeps both in harmony.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>Guides &amp; Tutorials</category><category>Git</category><category>Version Control</category><category>Best Practices</category><category>Development</category><category>GitOps</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Docker MCP - How GPT Agents Now Use Slack, GitHub, Stripe &amp; More</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Learn how Docker and MCP let GPT agents use tools like Slack, GitHub, and Stripe — turning AI from smart talkers into real-world doers.</description><pubDate>Mon, 09 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today, I want to tell you how models like GPT and Claude went from just talking — to actually acting.&lt;/p&gt;
&lt;p&gt;You can think of it as them &lt;strong&gt;getting hands&lt;/strong&gt;. And by “hands,” I mean &lt;strong&gt;agents&lt;/strong&gt; — helper programs that let the model trigger real-world tools.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;send a message in Slack,&lt;/li&gt;
&lt;li&gt;check a payment in Stripe,&lt;/li&gt;
&lt;li&gt;or open a pull request on GitHub.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No magic needed — just &lt;strong&gt;MCP&lt;/strong&gt;, an open standard called the &lt;a href=&quot;https://www.anthropic.com/news/model-context-protocol&quot;&gt;Model Context Protocol&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It gives language models a consistent, secure way to interact with external tools — from APIs to databases to cloud services.&lt;/p&gt;
&lt;p&gt;import VideoPlayer from &quot;@components/VideoPlayer.astro&quot;;&lt;/p&gt;
&lt;p&gt;&amp;lt;VideoPlayer
videoId=&quot;YwURFI88sq0&quot;
title=&quot;Docker MCP - How GPT Agents Now Use Slack, GitHub, Stripe &amp;amp; More&quot;
/&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Challenge: Why This Was Hard&lt;/h2&gt;
&lt;p&gt;But getting to this point wasn&apos;t easy.&lt;/p&gt;
&lt;p&gt;So let&apos;s talk about what made this hard in the first place, how it works today — and how Docker helps keep the whole setup clean, isolated, and easy to deploy.&lt;/p&gt;
&lt;p&gt;You see, AI has always been a great advisor. It can write code, help find bugs, or even craft a poem if you&apos;re feeling down.&lt;/p&gt;
&lt;p&gt;But the moment you asked it something simple, like:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Hey, can you post in Slack that the task is done?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It would just look at you and say:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Uh… I&apos;d love to, but I&apos;m just a language model. I can talk — but I can&apos;t do.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And yeah — it makes sense. It&apos;s smart. It just couldn&apos;t act on its own.&lt;/p&gt;
&lt;p&gt;The brain was there — logic, knowledge, and clear reasoning.&lt;/p&gt;
&lt;p&gt;But actually &lt;strong&gt;taking action&lt;/strong&gt;? That wasn&apos;t part of the job description.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Enter Agents (a.k.a. Hands for Models)&lt;/h2&gt;
&lt;p&gt;To close that gap, developers started giving models a way to act — by connecting them to small helper services called &lt;strong&gt;agents&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In the world of MCP, these are known as &lt;strong&gt;MCP servers&lt;/strong&gt;. And the app that connects the model to those servers? That&apos;s called the &lt;strong&gt;host&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;How It Works — Step by Step&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;The model says what it wants to do — like “Send this message to Slack.”&lt;/li&gt;
&lt;li&gt;The host takes that request and passes it to the right MCP server.&lt;/li&gt;
&lt;li&gt;The MCP server performs the action — sends the message, makes the API call, whatever.&lt;/li&gt;
&lt;li&gt;The host takes the result and gives it back to the model, so it can finish its reply.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Simple&lt;/strong&gt;: The brain thinks, the hands act — and MCP is a cable that connects them.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Catch: Why It Was a Headache&lt;/h2&gt;
&lt;p&gt;For a long time, setting this up was… &lt;strong&gt;painful&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I mean, it sounded great on paper. But in real life? Total hacker quest.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You had to spin up MCP servers manually.&lt;/li&gt;
&lt;li&gt;Each agent had its own messy stack — Python, Node, Chromium — conflict city.&lt;/li&gt;
&lt;li&gt;API keys? Sitting in raw JSON. Easy to use, terrifying to manage.&lt;/li&gt;
&lt;li&gt;And if you wanted two or three agents? Brace yourself.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You just wanted to check a Stripe payment — and suddenly, you&apos;re deep in DIY DevOps.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;And That&apos;s Where Docker Comes In&lt;/h2&gt;
&lt;p&gt;It made launching MCP agents &lt;strong&gt;simple, consistent, and reliable&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;So imagine this: your AI finally gets hands — but you don&apos;t want those hands poking around your system.&lt;/p&gt;
&lt;p&gt;It&apos;s like Docker gives those hands &lt;strong&gt;gloves&lt;/strong&gt; — clean, contained, and safe.&lt;/p&gt;
&lt;p&gt;The model gets the freedom to act, but the boundaries stay in place.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each agent runs in its own container&lt;/li&gt;
&lt;li&gt;It only sees what you allow&lt;/li&gt;
&lt;li&gt;No mess in your system&lt;/li&gt;
&lt;li&gt;No library conflicts&lt;/li&gt;
&lt;li&gt;And no “whoops, I just deleted my desktop”&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;So What&apos;s Changed?&lt;/h2&gt;
&lt;p&gt;Now, Docker comes with the &lt;strong&gt;MCP Toolkit&lt;/strong&gt; — and with it, an official catalog of &lt;strong&gt;over 100 ready-to-go agents&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You open Docker Desktop, go to the MCP Toolkit tab — and they&apos;re right there, ready for action.&lt;/p&gt;
&lt;p&gt;You can browse the full &lt;a href=&quot;https://www.docker.com/products/mcp-catalog-and-toolkit/&quot;&gt;Docker MCP Toolkit&lt;/a&gt; and explore &lt;a href=&quot;https://hub.docker.com/catalogs/mcp&quot;&gt;MCP Servers on Docker Hub&lt;/a&gt; — over 100 officially supported tools ready to launch in seconds.&lt;/p&gt;
&lt;h3&gt;What Happens When You Use an Agent?&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;You pick an agent image — let&apos;s say GitHub&lt;/li&gt;
&lt;li&gt;Docker spins up a container&lt;/li&gt;
&lt;li&gt;The agent starts listening for commands from the model&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&apos;s it. No console gymnastics required.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Solving the Duplicated Agent Problem&lt;/h2&gt;
&lt;p&gt;Back in the day, if you ran multiple apps — like Claude, VS Code, whatever — none of them knew the agent was already running. So each one spun up its own copy.&lt;/p&gt;
&lt;p&gt;That meant things got...&lt;strong&gt;messy&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Two containers doing the same job&lt;/li&gt;
&lt;li&gt;Two access tokens&lt;/li&gt;
&lt;li&gt;Two network connections&lt;/li&gt;
&lt;li&gt;And a whole bunch of wasted resources&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It was clunky. Risky. And just unnecessary.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Now?&lt;/strong&gt; One agent. One container.&lt;/p&gt;
&lt;p&gt;Multiple clients can connect to it — no duplication, no conflicts, no extra overhead.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;But Is It Safe?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Yes — and here&apos;s why.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Agents run inside isolated Docker containers. Each container gives you a clean, controlled environment.&lt;/p&gt;
&lt;p&gt;The agent only sees what you explicitly share — folders, environment variables, network access. Docker handles the isolation by default. It puts a strong boundary around your agent, keeping your system safe from mistakes, bugs, or even compromised tools.&lt;/p&gt;
&lt;p&gt;Still, as with any software, it&apos;s smart to check what it&apos;s doing under the hood.&lt;/p&gt;
&lt;p&gt;Stick to well-maintained agents, follow best practices, and you&apos;re in good shape.&lt;/p&gt;
&lt;p&gt;And sure — like with any powerful tool, you can override that.&lt;/p&gt;
&lt;p&gt;If you add &lt;code&gt;--privileged&lt;/code&gt;, or mount the Docker socket, you&apos;re disabling that boundary. But stick with the defaults — and Docker takes care of the hard parts for you.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Who Is This For?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;If you&apos;re already using GPT, Claude, or Copilot — and want them to actually &lt;strong&gt;do stuff&lt;/strong&gt;, not just write about it&lt;/li&gt;
&lt;li&gt;If you&apos;re in DevOps — and tired of scripting the same tools over and over&lt;/li&gt;
&lt;li&gt;If you&apos;re a product person — and want AI wired into Jira, GitHub, Stripe, or whatever — in &lt;strong&gt;10 minutes flat&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;What You Actually Get&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;An agent up and running in just a couple of minutes&lt;/li&gt;
&lt;li&gt;Built-in isolation and safety&lt;/li&gt;
&lt;li&gt;And if you want to scale up? Just add more agents.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&apos;s that simple.&lt;/p&gt;
&lt;p&gt;Thanks for reading! Be sure to watch the &lt;a href=&quot;https://youtu.be/YwURFI88sq0&quot;&gt;video version&lt;/a&gt; for extra insights and helpful visuals.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>AI &amp; MLOps</category><category>Docker</category><category>AI</category><category>GPT</category><category>Automation</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Kubernetes on Your Laptop — No Cloud, No Boring Docs, Just Magic</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Kubernetes tutorial for beginners. Learn to run a full local cluster with Docker, Minikube, YAML, Pods, Deployments, Secrets — no cloud needed.</description><pubDate>Thu, 29 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey there, tech goddess (or just someone who&apos;s allergic to boring docs 👀)&lt;/p&gt;
&lt;p&gt;You&apos;ve probably heard of Kubernetes, but every tutorial starts with “cluster,” “orchestration,” and “in the cloud”?&lt;/p&gt;
&lt;p&gt;😩 No thanks.&lt;/p&gt;
&lt;p&gt;But what if I told you that you could launch your &lt;strong&gt;own website in Kubernetes, right on your laptop&lt;/strong&gt;, set up environment variables, pass in secrets — step by step, no AWS, no tears, no PhD required?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Docker, Minikube, kubectl, Pod, Deployment, ConfigMap, Secret — all of it. I&apos;ll walk you through everything.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You just open VS Code, copy a few commands — and boom: a real cluster,spinning, working, and doing your bidding like a true DevOps enchantress.
Enough theory — let&apos;s do some hands-on magic.&lt;/p&gt;
&lt;p&gt;No AWS, no signups, no credit cards — just you, your laptop, and your curiosity. 🚀&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 1 — Installing Docker (and figuring out why you even need it)&lt;/h2&gt;
&lt;h3&gt;Scene 1: &quot;What even is Docker?&quot;&lt;/h3&gt;
&lt;p&gt;Imagine you&apos;re trying to run an app. It works perfectly for your friend on Windows, but not for you on a Mac. She&apos;s on Windows, you&apos;re on a Mac.
It needs a bunch of libraries you don&apos;t have.&lt;/p&gt;
&lt;p&gt;🎯 The fix? A &lt;strong&gt;container&lt;/strong&gt; — a self-contained package that already includes everything the app needs.&lt;/p&gt;
&lt;p&gt;🧳 A container = a suitcase with code, tools, and everything else bundled in.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt; is the program that runs those suitcases — right on your machine.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Scene 2: &quot;Download and install Docker&quot;&lt;/h3&gt;
&lt;p&gt;📝 &lt;strong&gt;Do this:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to 👉 https://www.docker.com/products/docker-desktop&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;Docker Desktop for macOS&lt;/strong&gt; (or your OS).&lt;/li&gt;
&lt;li&gt;Download the installer.&lt;/li&gt;
&lt;li&gt;Install like any other app: drag the Docker icon into your &lt;code&gt;Applications&lt;/code&gt; folder.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;📌 Once it&apos;s installed — &lt;strong&gt;launch Docker Desktop&lt;/strong&gt; (via Spotlight or Launchpad).&lt;/p&gt;
&lt;h3&gt;Quick check: is Docker working?&lt;/h3&gt;
&lt;p&gt;🔧 &lt;strong&gt;Open Terminal&lt;/strong&gt; (&lt;code&gt;Cmd + Space&lt;/code&gt;, type “Terminal”).&lt;/p&gt;
&lt;p&gt;Run this command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;bash docker --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see something like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Docker version 24.0.2, build abc123
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That means Docker is installed!&lt;/p&gt;
&lt;p&gt;Next, run:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If Docker is running, you&apos;ll see an &lt;strong&gt;empty table&lt;/strong&gt;, like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&apos;s totally fine — it just means &lt;strong&gt;no containers are running yet&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;😱 &lt;strong&gt;If Docker doesn&apos;t start or &lt;code&gt;docker ps&lt;/code&gt; throws an error:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;🧨 What&apos;s happening&lt;/th&gt;
&lt;th&gt;💡 Try this&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docker ps&lt;/code&gt; doesn&apos;t work&lt;/td&gt;
&lt;td&gt;Make sure &lt;strong&gt;Docker Desktop is running&lt;/strong&gt; — look for the 🐳 icon in your top menu bar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command not found&lt;/td&gt;
&lt;td&gt;Restart your &lt;strong&gt;Terminal&lt;/strong&gt; or &lt;strong&gt;reboot your machine&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docker launched, but nothing&apos;s happening&lt;/td&gt;
&lt;td&gt;The first launch can take a couple of minutes — be patient&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;It&apos;s asking for permissions&lt;/td&gt;
&lt;td&gt;Check if macOS is waiting for you to approve something — a pop-up might be hiding behind other windows&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Why does this matter?&lt;/h3&gt;
&lt;p&gt;We&apos;ll be launching our &lt;strong&gt;Kubernetes cluster using Minikube&lt;/strong&gt;, and Minikube runs containers under the hood.&lt;/p&gt;
&lt;p&gt;No Docker = no cluster = no “Hello, Pod.” 😬&lt;/p&gt;
&lt;p&gt;✅ TL;DR — You&apos;re ready to move on if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You installed Docker Desktop&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker --version&lt;/code&gt; works&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker ps&lt;/code&gt; shows an empty table (and no errors)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If all that&apos;s good — &lt;strong&gt;let&apos;s install Kubernetes (via Minikube)!&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 2 — Installing Minikube &amp;amp; kubectl (and launching your first cluster!)&lt;/h2&gt;
&lt;h3&gt;Scene 1: “What are Minikube and kubectl?”&lt;/h3&gt;
&lt;p&gt;🛠 &lt;strong&gt;Minikube&lt;/strong&gt; is like a mini version of Kubernetes you can run &lt;em&gt;right on your laptop&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;That means: no server, no cloud, no AWS, no mystical cluster setup — Minikube spins it all up locally.&lt;/p&gt;
&lt;p&gt;🎮 &lt;strong&gt;kubectl&lt;/strong&gt; (say “cube control” or “kube cuddle”) is your &lt;strong&gt;remote control&lt;/strong&gt; for that cluster.&lt;/p&gt;
&lt;p&gt;You&apos;ll use &lt;code&gt;kubectl&lt;/code&gt; to create pods, check logs, update apps — basically, run the show.&lt;/p&gt;
&lt;h3&gt;Scene 2: Install kubectl and Minikube&lt;/h3&gt;
&lt;p&gt;📝 &lt;strong&gt;If you&apos;re on a Mac:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Open Terminal and run these one by one:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install kubectl
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install minikube
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🧘‍♀️ Take a moment, let Homebrew do its magic.&lt;/p&gt;
&lt;h3&gt;Scene 3: Start the cluster&lt;/h3&gt;
&lt;p&gt;Once it&apos;s installed, fire up your mini-cluster:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;minikube start --driver=docker
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;💡 What&apos;s happening here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kubernetes is starting &lt;em&gt;inside&lt;/em&gt; Docker (which you set up in Step 1).&lt;/li&gt;
&lt;li&gt;Minikube creates a “virtual machine” running your cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;⏱ This may take 1-2 minutes, so... deep breath.&lt;/p&gt;
&lt;h3&gt;Check if everything&apos;s working&lt;/h3&gt;
&lt;p&gt;Run this command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📋 You should see something like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 1m v1.29.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you see &lt;code&gt;STATUS: Ready&lt;/code&gt; - &lt;strong&gt;congrats!&lt;/strong&gt; 🎉&lt;/p&gt;
&lt;p&gt;Your first cluster is up. You literally just spun up your own infrastructure.&lt;/p&gt;
&lt;p&gt;:::note
Minikube runs a &lt;strong&gt;single-node cluster -&lt;/strong&gt; perfect for learning and testing, but &lt;strong&gt;not meant for production&lt;/strong&gt;. And that&apos;s totally fine — we&apos;re here to get hands-on, not deploy Netflix.
:::&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;If something goes wrong - don&apos;t panic!&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;🔥 Problem&lt;/th&gt;
&lt;th&gt;💡 What to check&lt;/th&gt;
&lt;th&gt;🛠 Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl&lt;/code&gt; not recognized&lt;/td&gt;
&lt;td&gt;Did the install finish cleanly? Try restarting your terminal.&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;minikube&lt;/code&gt; won&apos;t start&lt;/td&gt;
&lt;td&gt;Is &lt;strong&gt;Docker Desktop&lt;/strong&gt; running? Look for the 🐳 icon.&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;minikube start&lt;/code&gt; just hangs&lt;/td&gt;
&lt;td&gt;Try restarting Docker, rebooting, and make sure you&apos;ve got at least &lt;strong&gt;4 GB of free RAM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl get nodes&lt;/code&gt; shows nothing&lt;/td&gt;
&lt;td&gt;Check if the cluster is running&lt;/td&gt;
&lt;td&gt;&lt;code&gt;minikube status&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cluster not started&lt;/td&gt;
&lt;td&gt;Just run it again&lt;/td&gt;
&lt;td&gt;&lt;code&gt;minikube start&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Why did we do this?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Kubernetes is how you run and manage container-based apps.&lt;/li&gt;
&lt;li&gt;Minikube lets you explore it &lt;strong&gt;without needing cloud servers&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;kubectl is your command center.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now you&apos;re ready to create pods, deployments, services - &lt;strong&gt;everything a true DevOps witch needs&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 3 — My First Pod: Running an App in Kubernetes&lt;/h2&gt;
&lt;h3&gt;Scene 1: “What even is a Pod?”&lt;/h3&gt;
&lt;p&gt;📦 In Kubernetes, &lt;em&gt;everything&lt;/em&gt; revolves around Pods.&lt;/p&gt;
&lt;p&gt;Think of a Pod as &lt;strong&gt;a little room with one (or more) containers&lt;/strong&gt; inside that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;share network and storage&lt;/li&gt;
&lt;li&gt;start together&lt;/li&gt;
&lt;li&gt;live and die together&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A Pod usually runs just one container (like our nginx example) - but it &lt;em&gt;can&lt;/em&gt; have multiple, like sidecars.&lt;/p&gt;
&lt;h3&gt;Scene 2: Create a YAML file for your Pod&lt;/h3&gt;
&lt;p&gt;📁 Open VS Code or your favorite code editor. Create a new file and name it:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pod.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✍️ Paste this inside:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: v1
kind: Pod
metadata:
  name: my-first-pod
spec:
  containers:
    - name: nginx
      image: nginx:alpine
      ports:
        - containerPort: 80
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✨ &lt;em&gt;What&apos;s going on here:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;apiVersion&lt;/code&gt;, &lt;code&gt;kind&lt;/code&gt;, &lt;code&gt;metadata&lt;/code&gt; — just Kubernetes boilerplate: &quot;this is a Pod, name it like this&quot;.&lt;/li&gt;
&lt;li&gt;Inside &lt;code&gt;containers:&lt;/code&gt; you&apos;re saying: “Run a container using nginx:alpine and open port 80.”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Scene 3: Apply the file and launch the Pod&lt;/h3&gt;
&lt;p&gt;In your terminal, while inside the folder with the file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl apply -f pod.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;👉 This tells Kubernetes: &quot;Here&apos;s the definition — go make it real!&quot;&lt;/p&gt;
&lt;p&gt;Then check:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see something like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;NAME READY STATUS RESTARTS AGE
my-first-pod 1/1 Running 0 10s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✅ &lt;code&gt;STATUS: Running&lt;/code&gt; means your Pod is alive and well! 🎉&lt;/p&gt;
&lt;h3&gt;Scene 4: Open your app in the browser&lt;/h3&gt;
&lt;p&gt;Now let&apos;s actually see nginx in action. Time to forward that port:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl port-forward pod/my-first-pod 8080:80
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;💡 &lt;em&gt;What&apos;s this doing?&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It tunnels port 80 from inside the container to your &lt;code&gt;localhost:8080&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Meaning: &lt;strong&gt;whatever nginx serves, you can see in your browser.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Scene 5: Check if it&apos;s working&lt;/h3&gt;
&lt;p&gt;Pop open your browser and go to:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;http://localhost:8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you see the default nginx page — &lt;strong&gt;boom, success!&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;If it didn&apos;t work — deep breath, let&apos;s fix it&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;🔥 Problem&lt;/th&gt;
&lt;th&gt;💡 What to try&lt;/th&gt;
&lt;th&gt;🛠 Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Browser says “site can&apos;t be reached”&lt;/td&gt;
&lt;td&gt;Make sure the terminal with &lt;code&gt;port-forward&lt;/code&gt; is still open&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl port-forward&lt;/code&gt; hangs or fails&lt;/td&gt;
&lt;td&gt;Cancel it (&lt;code&gt;Ctrl + C&lt;/code&gt;) and try again&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl port-forward pod/my-first-pod 8080:80&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Port 8080 is already in use&lt;/td&gt;
&lt;td&gt;Try a different port&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl port-forward pod/my-first-pod 8081:80&lt;/code&gt; and go to &lt;code&gt;localhost:8081&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;nginx didn&apos;t start in the Pod&lt;/td&gt;
&lt;td&gt;Check the logs&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl logs my-first-pod&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;p&gt;So far, you&apos;ve:&lt;/p&gt;
&lt;p&gt;✅ Started your cluster&lt;br /&gt;
✅ Created your very first Pod&lt;br /&gt;
✅ Launched nginx&lt;br /&gt;
✅ Accessed it through the browser&lt;/p&gt;
&lt;p&gt;This was your &lt;strong&gt;first real app running in Kubernetes&lt;/strong&gt; — and that&apos;s a huge milestone 👏👏👏&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 4 — Deployment: So Your Pods Don&apos;t Break (And If They Do — They Auto-Heal)&lt;/h2&gt;
&lt;h3&gt;Scene 1: “What is a Deployment, anyway?”&lt;/h3&gt;
&lt;p&gt;In the last step, you manually created a Pod.
But here&apos;s the problem:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If it crashes — &lt;strong&gt;nobody restarts it&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;You want &lt;strong&gt;two Pods&lt;/strong&gt; for reliability&lt;/li&gt;
&lt;li&gt;You want Kubernetes to &lt;strong&gt;watch over them automatically&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🎯 Enter the &lt;strong&gt;Deployment&lt;/strong&gt;. It:&lt;/p&gt;
&lt;p&gt;✅ creates Pods&lt;br /&gt;
✅ scales them (1, 2, 10, 100 — whatever)&lt;br /&gt;
✅ restarts them if they crash&lt;br /&gt;
✅ makes it easy to update images&lt;/p&gt;
&lt;p&gt;Basically — a Pod manager that keeps your app alive and thriving.&lt;/p&gt;
&lt;h3&gt;Scene 2: Create the Deployment YAML&lt;/h3&gt;
&lt;p&gt;📁 Create a new file called:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;deployment.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✍️ Paste this in:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:alpine
          ports:
            - containerPort: 80
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;💡 &lt;em&gt;What&apos;s happening here:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;replicas: 2&lt;/code&gt; — we&apos;re saying “Give me 2 identical Pods”&lt;/li&gt;
&lt;li&gt;&lt;code&gt;selector.matchLabels&lt;/code&gt; + &lt;code&gt;template.metadata.labels&lt;/code&gt; — this connects the Deployment to the Pods via &lt;code&gt;app: nginx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;containers&lt;/code&gt; — same as before: launch nginx&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Scene 3: Apply the Deployment&lt;/h3&gt;
&lt;p&gt;Open your terminal and run this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl apply -f deployment.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🔍 You&apos;re telling Kubernetes: &quot;Here&apos;s the blueprint — build it.&quot;&lt;/p&gt;
&lt;p&gt;Now check that it worked:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get deployments
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see something like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 2/2 2 2 10s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✅ Which means: 2 Pods are up and running.&lt;/p&gt;
&lt;p&gt;Now check the actual Pods:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see two Pods with similar names, like:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;nginx-deployment-xxx-yyy 1/1 Running
nginx-deployment-aaa-bbb 1/1 Running
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Scene 4: Let&apos;s test the auto-recovery&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;🧪 Tiny experiment: delete one of the Pods&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl delete pod &amp;lt;one-of-the-pod-names&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A few seconds later:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You&apos;ll see 2 Pods again.&lt;/p&gt;
&lt;p&gt;🤯 Because the Deployment &lt;strong&gt;noticed one was gone — and created a new one automatically!&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;If the Deployment doesn&apos;t launch or Pods don&apos;t appear&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;🔥 Problem&lt;/th&gt;
&lt;th&gt;💡 What to check&lt;/th&gt;
&lt;th&gt;🛠 Example Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl apply -f deployment.yaml&lt;/code&gt; does nothing&lt;/td&gt;
&lt;td&gt;Make sure the file is &lt;strong&gt;named correctly&lt;/strong&gt; and you&apos;re in the right folder&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl get deployments&lt;/code&gt; shows nothing&lt;/td&gt;
&lt;td&gt;Could be a YAML error (indentation, missing keys)&lt;/td&gt;
&lt;td&gt;Run &lt;code&gt;kubectl apply -f deployment.yaml&lt;/code&gt; again to see the error&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pods crash (&lt;code&gt;STATUS: CrashLoopBackOff&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Something is breaking inside the container — check the logs&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl logs &amp;lt;pod-name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Don&apos;t know the Pod name&lt;/td&gt;
&lt;td&gt;Just list all Pods&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get pods&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;error: unable to recognize&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Your YAML might be broken — check the format&lt;/td&gt;
&lt;td&gt;Use &lt;a href=&quot;https://codebeautify.org/yaml-validator&quot;&gt;YAML Linter&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;📌 &lt;em&gt;Pro tip:&lt;/em&gt; You can always list Pods with:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Why this matters&lt;/h3&gt;
&lt;p&gt;Now you&apos;ve got:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Two Pods&lt;/strong&gt; = more reliability&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-healing&lt;/strong&gt; containers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Easy updates&lt;/strong&gt; in the future&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You just leveled up from “one test container” to a &lt;strong&gt;real Kubernetes-managed application&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 5 — Service: How to Open a Pod in the Browser (Without Magic)&lt;/h2&gt;
&lt;h3&gt;Scene 1: “What is a Service?”&lt;/h3&gt;
&lt;p&gt;You already launched 2 nginx Pods — but right now, they&apos;re hiding behind a wall.&lt;/p&gt;
&lt;p&gt;🙅‍♀️ Without a Service, you &lt;strong&gt;can&apos;t just open them in the browser&lt;/strong&gt;. Because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pods have &lt;strong&gt;internal IPs&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;They&apos;re not accessible from “outside”&lt;/li&gt;
&lt;li&gt;If a Pod restarts, its IP might change&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🎯 A Service is like a &lt;strong&gt;stable front door&lt;/strong&gt; to your app.&lt;/p&gt;
&lt;p&gt;It knows where your Pods are and routes traffic to them.&lt;/p&gt;
&lt;p&gt;Even if a Pod dies, restarts, or moves — the Service still leads to the right place.&lt;/p&gt;
&lt;h3&gt;Scene 2: Create &lt;code&gt;service.yaml&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;📁 Create a new file and name it:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;service.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✍️ Paste this in:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;💡 What this does:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type: NodePort&lt;/code&gt; — tells Kubernetes: “Expose this to the outside world via a port”&lt;/li&gt;
&lt;li&gt;&lt;code&gt;selector: app: nginx&lt;/code&gt; — the Service will forward traffic to Pods with that label&lt;/li&gt;
&lt;li&gt;&lt;code&gt;port&lt;/code&gt; — the port the Service listens on (inside the cluster)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;targetPort&lt;/code&gt; — where to send traffic inside the Pod (nginx listens on port 80)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nodePort&lt;/code&gt; — the &lt;strong&gt;external&lt;/strong&gt; port you&apos;ll use in your browser&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Scene 3: Apply the Service&lt;/h3&gt;
&lt;p&gt;In your terminal:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl apply -f service.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🎉 Boom — your Service is live!&lt;/p&gt;
&lt;p&gt;Now run this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;minikube service nginx-service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🪄 That command will &lt;strong&gt;automatically open your site in the browser&lt;/strong&gt; — no need to worry about ports, IPs, or voodoo.&lt;/p&gt;
&lt;p&gt;Didn&apos;t open? You can do it manually:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;minikube ip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;👉 You&apos;ll get an IP, like &lt;code&gt;192.168.49.2&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now go to:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;http://192.168.49.2:30080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✅ You should see the nginx welcome page!&lt;/p&gt;
&lt;h3&gt;What did we just do?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;You created a &lt;strong&gt;Service&lt;/strong&gt; to route traffic to your Pods&lt;/li&gt;
&lt;li&gt;Used &lt;strong&gt;NodePort&lt;/strong&gt; to make it accessible from outside&lt;/li&gt;
&lt;li&gt;Opened a real website running inside Kubernetes — without &lt;code&gt;port-forward&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You&apos;re now officially at the “my app runs in K8s and opens in a browser” level —&lt;/p&gt;
&lt;p&gt;aka your very first &lt;strong&gt;Kubernetes web app prototype&lt;/strong&gt;!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 6 — ConfigMap: Passing Variables Into a Container (No Rebuilding Needed)&lt;/h2&gt;
&lt;h3&gt;Scene 1: “Why do we even need ConfigMap?”&lt;/h3&gt;
&lt;p&gt;Let&apos;s say you&apos;ve got a website. And now you want to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;show a different welcome message&lt;/li&gt;
&lt;li&gt;tweak the behavior without rebuilding the image&lt;/li&gt;
&lt;li&gt;keep settings separate from your code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;📦 &lt;strong&gt;ConfigMap&lt;/strong&gt; is how you pass variables into your Pods.&lt;/p&gt;
&lt;p&gt;Think of it like: “Here&apos;s a YAML with your config — grab it when you start up.”&lt;/p&gt;
&lt;h3&gt;Scene 2: Create the ConfigMap&lt;/h3&gt;
&lt;p&gt;📁 Create a file called:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;configmap.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✍️ Paste this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
data:
  WELCOME_MSG: &quot;Hello from ConfigMap!&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✨ What&apos;s going on here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;data:&lt;/code&gt; is just a key-value map&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WELCOME_MSG&lt;/code&gt; is an example string (but it could be a URL, a mode, a path — anything)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Scene 3: Update your deployment.yaml&lt;/h3&gt;
&lt;p&gt;Open your &lt;code&gt;deployment.yaml&lt;/code&gt; and inside the container block, add this under &lt;code&gt;spec.containers[0]&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;env:
  - name: WELCOME_MSG
    valueFrom:
      configMapKeyRef:
        name: nginx-config
        key: WELCOME_MSG
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 This tells Kubernetes: “When launching the container, pass it this environment variable from the ConfigMap.”&lt;/p&gt;
&lt;h3&gt;Scene 4: Apply it all&lt;/h3&gt;
&lt;p&gt;In your terminal, run:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl apply -f configmap.yaml
kubectl apply -f deployment.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🔄 This updates both the ConfigMap and the Deployment so everything is hooked up.&lt;/p&gt;
&lt;h3&gt;Scene 5: Check if the variable is inside the container&lt;/h3&gt;
&lt;p&gt;First, get the name of one of the Pods:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copy a name (like &lt;code&gt;nginx-deployment-xxx-yyy&lt;/code&gt;) and jump inside:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl exec -it nginx-deployment-xxx-yyy -- /bin/sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now run:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo $WELCOME_MSG
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✅ You should see:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Hello from ConfigMap!
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🎉 It worked! The variable made it all the way into your container from Kubernetes.&lt;/p&gt;
&lt;h3&gt;If the variable didn&apos;t show up&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;🔥 Problem&lt;/th&gt;
&lt;th&gt;💡 Check this&lt;/th&gt;
&lt;th&gt;🛠 Example command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;echo $WELCOME_MSG&lt;/code&gt; shows nothing&lt;/td&gt;
&lt;td&gt;Make sure you &lt;strong&gt;saved changes&lt;/strong&gt; and re-applied &lt;code&gt;deployment.yaml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl apply -f deployment.yaml&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;It looks right but still no variable&lt;/td&gt;
&lt;td&gt;The &lt;strong&gt;Pod may not have restarted&lt;/strong&gt; — delete it manually and let Deployment recreate it&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl delete pod &amp;lt;pod_name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can&apos;t get into the Pod&lt;/td&gt;
&lt;td&gt;Double-check the Pod name&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get pods&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubectl exec&lt;/code&gt; doesn&apos;t work&lt;/td&gt;
&lt;td&gt;Pod may have crashed — check status or logs&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get pods&lt;/code&gt;, &lt;code&gt;kubectl logs &amp;lt;pod_name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;📌 &lt;em&gt;Pro tip:&lt;/em&gt; For the new config to appear, the Pod usually has to be recreated.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;kubectl apply&lt;/code&gt; updates the Deployment, but won&apos;t restart running Pods.&lt;/p&gt;
&lt;h3&gt;What did you just do?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Created a config variable in Kubernetes&lt;/li&gt;
&lt;li&gt;Passed it into a Pod via Deployment&lt;/li&gt;
&lt;li&gt;Saw the variable live inside your container&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is key when your app needs to be flexible — change config without rebuilding the Docker image.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 7 — Secret: Safely Passing Passwords and Tokens into a Pod&lt;/h2&gt;
&lt;h3&gt;Scene 1: “ConfigMap vs Secret — what&apos;s the difference?”&lt;/h3&gt;
&lt;p&gt;💡 &lt;code&gt;ConfigMap&lt;/code&gt; — for regular settings: modes, messages, URLs.&lt;/p&gt;
&lt;p&gt;🔐 &lt;code&gt;Secret&lt;/code&gt; — for anything you &lt;strong&gt;don&apos;t want exposed to the world&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;passwords&lt;/li&gt;
&lt;li&gt;access tokens&lt;/li&gt;
&lt;li&gt;API keys&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;❗ Heads up: Secret values are automatically &lt;strong&gt;base64-encoded&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;That&apos;s not encryption — just a way to hide them from curious eyes.&lt;/p&gt;
&lt;h3&gt;Scene 2: Create a secret file&lt;/h3&gt;
&lt;p&gt;📁 Create a new file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;secret.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✍️ Paste this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: v1
kind: Secret
metadata:
  name: nginx-secret
type: Opaque
data:
  SECRET_MSG: SGVsbG8sIGZyb20gU2VjcmV0IQ==
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✨ What&apos;s going on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type: Opaque&lt;/code&gt; — standard type of Secret&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data:&lt;/code&gt; — key-value pairs (in base64)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;📌 Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo -n &quot;Hello, from Secret!&quot; | base64
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Which gives you: &lt;code&gt;SGVsbG8sIGZyb20gU2VjcmV0IQ==&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Scene 3: Link the Secret to your container&lt;/h3&gt;
&lt;p&gt;Open your &lt;code&gt;deployment.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Inside &lt;code&gt;containers &amp;gt; env&lt;/code&gt;, add:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;- name: SECRET_MSG
  valueFrom:
    secretKeyRef:
      name: nginx-secret
      key: SECRET_MSG
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Works exactly like ConfigMap — just a different data source: a Secret.&lt;/p&gt;
&lt;h3&gt;Scene 4: Apply the changes&lt;/h3&gt;
&lt;p&gt;In your terminal:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl apply -f secret.yaml
kubectl apply -f deployment.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📦 Kubernetes will update the Secret and roll out the changes.&lt;/p&gt;
&lt;h3&gt;Scene 5: Check the container&lt;/h3&gt;
&lt;p&gt;First, get your Pod&apos;s name:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then hop inside one:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl exec -it &amp;lt;pod_name&amp;gt; -- /bin/sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now check the variable:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo $SECRET_MSG
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✅ You should see:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Hello, from Secret!
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🎉 That means your Secret was passed into the container successfully!&lt;/p&gt;
&lt;h3&gt;If the Secret variable didn&apos;t show up&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;🔥 Problem&lt;/th&gt;
&lt;th&gt;💡 Check this&lt;/th&gt;
&lt;th&gt;🛠 Example command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;echo $SECRET_MSG&lt;/code&gt; shows nothing&lt;/td&gt;
&lt;td&gt;Make sure you saved and re-applied &lt;code&gt;deployment.yaml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl apply -f deployment.yaml&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secret wasn&apos;t created&lt;/td&gt;
&lt;td&gt;Verify it&apos;s actually there&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get secrets&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pod didn&apos;t restart&lt;/td&gt;
&lt;td&gt;Delete it manually — Deployment will recreate it&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl delete pod &amp;lt;pod_name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;base64 was wrong&lt;/td&gt;
&lt;td&gt;Make sure you encoded &lt;strong&gt;without newline&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;`echo -n &quot;Hello&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can&apos;t enter the Pod&lt;/td&gt;
&lt;td&gt;Double-check the Pod name&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get pods&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;📌 &lt;em&gt;Pro tip:&lt;/em&gt; If the variable doesn&apos;t show up after &lt;code&gt;apply&lt;/code&gt;, manually deleting the Pod usually helps.&lt;/p&gt;
&lt;h3&gt;Why does this matter?&lt;/h3&gt;
&lt;p&gt;🔐 &lt;code&gt;Secret&lt;/code&gt; is the standard way to &lt;strong&gt;safely pass sensitive data&lt;/strong&gt; into your app — no hardcoding, no YAML leaks.&lt;/p&gt;
&lt;p&gt;You just:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;created a Kubernetes Secret&lt;/li&gt;
&lt;li&gt;passed it into a container&lt;/li&gt;
&lt;li&gt;verified it from the inside&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Magic. Secure magic. 💫&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⏸️ Now pause for a second.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you realize what you&apos;ve just done?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You installed a cluster. Deployed an app. Passed it configs and secrets — the full DevOps starter pack.&lt;/p&gt;
&lt;p&gt;🤯 No clouds. No five tabs of Stack Overflow. No fear of hitting Enter.&lt;/p&gt;
&lt;p&gt;Let&apos;s wrap it all up in a beautiful summary:&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Final Recap — What You Did and Why It Matters&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;What You Did&lt;/th&gt;
&lt;th&gt;Why It Matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Installed Docker&lt;/td&gt;
&lt;td&gt;Runs containers — the foundation for Kubernetes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Installed Minikube and kubectl&lt;/td&gt;
&lt;td&gt;Local cluster and control tool&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Created a Pod&lt;/td&gt;
&lt;td&gt;Ran your first app in Kubernetes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Set up a Deployment&lt;/td&gt;
&lt;td&gt;Manages and scales Pods automatically&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Added a Service&lt;/td&gt;
&lt;td&gt;Made your app accessible from the browser&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Connected a ConfigMap&lt;/td&gt;
&lt;td&gt;Passed env vars without rebuilding the image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Connected a Secret&lt;/td&gt;
&lt;td&gt;Securely passed passwords and sensitive data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;✨ You just built a &lt;strong&gt;mini-infrastructure&lt;/strong&gt; on your own laptop.&lt;/p&gt;
&lt;p&gt;This isn&apos;t just “hello world” — it&apos;s &lt;strong&gt;hello Kubernetes&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;So, what&apos;s next? Two paths:&lt;/h2&gt;
&lt;h3&gt;Want to take a break and return later?&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Stop the cluster:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;minikube stop
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Optionally quit Docker Desktop:&lt;/p&gt;
&lt;p&gt;Click the 🐳 icon in the top bar → &lt;strong&gt;Quit Docker Desktop&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;🛑 That&apos;s like hitting &quot;pause.&quot;&lt;/p&gt;
&lt;p&gt;Nothing will be deleted — everything stays just as it is.&lt;/p&gt;
&lt;p&gt;👉 When you want to come back:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start Docker Desktop&lt;/li&gt;
&lt;li&gt;Then run:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;minikube start
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;💡 And boom — your Pods, Services, Configs, Secrets... all back in action.&lt;/p&gt;
&lt;h3&gt;Not planning to return?&lt;/h3&gt;
&lt;p&gt;If you want to fully clean up everything we built:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;minikube delete
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This removes the cluster, all Pods, configs, and secrets — clean slate.&lt;/p&gt;
&lt;p&gt;You can leave Docker installed — you&apos;ll probably use it again (a lot).&lt;/p&gt;
&lt;p&gt;Even if you never touch Kubernetes again — know this:&lt;/p&gt;
&lt;p&gt;You started it. You understood it. You &lt;strong&gt;owned&lt;/strong&gt; it. That&apos;s already a huge step into the DevOps world.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Kubernetes</category><category>Local Development</category><category>Self-Hosting</category><category>Guides</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>10 Docker Interview Questions &amp; Answers for DevOps &amp; Cloud Engineers</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Top 10 Docker interview questions for 2025 DevOps &amp; Cloud Engineer roles — with answers, code examples, and expert tips to help you ace your next interview.</description><pubDate>Mon, 26 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you&apos;re preparing for a Cloud Engineer or DevOps Engineer interview in 2025, Docker is non-negotiable — it comes up &lt;em&gt;every single time&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Today, we&apos;re going through 10 Docker questions you&apos;re very likely to face — and how to answer them clearly and confidently.&lt;/p&gt;
&lt;p&gt;import VideoPlayer from &quot;@components/VideoPlayer.astro&quot;;&lt;/p&gt;
&lt;p&gt;&amp;lt;VideoPlayer
videoId=&quot;qf4fOqE345k&quot;
title=&quot;10 Docker Interview Questions &amp;amp; Answers for DevOps &amp;amp; Cloud Engineers&quot;
/&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Before We Dive In: What Is Docker?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt; is a platform that lets you run applications in isolated environments called &lt;a href=&quot;https://docs.docker.com/get-started/docker-overview/&quot;&gt;containers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These containers can run consistently across different environments — your laptop, a test server, production — without running into problems that only appear outside your local setup.&lt;/p&gt;
&lt;p&gt;In real-world projects and DevOps roles, Docker is almost everywhere — for app development, testing, CI/CD pipelines, and cloud deployments.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 1: What&apos;s the difference between an image and a container? And what happens if you delete the image?&lt;/h2&gt;
&lt;p&gt;A &lt;a href=&quot;https://docs.docker.com/reference/cli/docker/image/&quot;&gt;Docker image&lt;/a&gt; is like a frozen recipe for your application — it includes everything needed to run it: code, libraries, environment settings.&lt;/p&gt;
&lt;p&gt;A &lt;a href=&quot;https://www.docker.com/resources/what-container/&quot;&gt;container&lt;/a&gt; is what you get when Docker takes that image and actually runs it — like turning the recipe into a real, running dish.&lt;/p&gt;
&lt;p&gt;The image is read-only and reusable; the container has its own writable layer and lives as an isolated process. If you delete the image but the container is already running, it keeps working — because the image is already loaded into memory.&lt;/p&gt;
&lt;p&gt;But if you stop that container and try to restart it, Docker won&apos;t find the image — and the restart will fail.&lt;/p&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Tag your images properly (&lt;code&gt;my-app:latest&lt;/code&gt;, &lt;code&gt;my-app:v1.2&lt;/code&gt;) and regularly prune unused ones — but avoid deleting images used by running containers.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 2: What actually happens when you run docker run?&lt;/h2&gt;
&lt;p&gt;When I run &lt;a href=&quot;https://docs.docker.com/engine/reference/commandline/run/&quot;&gt;docker run&lt;/a&gt;, Docker first checks if the image exists locally.&lt;/p&gt;
&lt;p&gt;If not — it pulls it from a registry like &lt;a href=&quot;https://hub.docker.com/&quot;&gt;Docker Hub&lt;/a&gt;. Then it creates a container — which is basically an isolated process with its own filesystem, networking, and resources.&lt;/p&gt;
&lt;p&gt;Docker sets up isolation using Linux &lt;a href=&quot;https://man7.org/linux/man-pages/man7/namespaces.7.html&quot;&gt;namespaces&lt;/a&gt; and &lt;a href=&quot;https://man7.org/linux/man-pages/man7/cgroups.7.html&quot;&gt;cgroups&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally, it executes the default command defined in the image.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Running &lt;code&gt;docker run nginx&lt;/code&gt; pulls the &lt;code&gt;nginx&lt;/code&gt; image (if it&apos;s not local), creates a container, and starts the Nginx server inside that isolated environment.&lt;/p&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Use &lt;code&gt;--rm&lt;/code&gt; with &lt;code&gt;docker run&lt;/code&gt; to automatically clean up the container after it exits — so your system doesn&apos;t get cluttered with stopped containers.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 3: COPY vs ADD — what&apos;s the difference, and when would you use each?&lt;/h2&gt;
&lt;p&gt;Both &lt;a href=&quot;https://docs.docker.com/reference/dockerfile/#copy&quot;&gt;COPY&lt;/a&gt; and &lt;a href=&quot;https://docs.docker.com/reference/dockerfile/#add&quot;&gt;ADD&lt;/a&gt; move files into a Docker image.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;COPY&lt;/code&gt; simply copies files and folders — no surprises.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ADD&lt;/code&gt; does more: it can unpack compressed files like &lt;code&gt;.tar.gz&lt;/code&gt; and download files from URLs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because &lt;code&gt;ADD&lt;/code&gt; has extra behavior that&apos;s not always obvious, I prefer &lt;code&gt;COPY&lt;/code&gt; for clarity and only use &lt;code&gt;ADD&lt;/code&gt; when I specifically need those extra features.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-dockerfile&quot;&gt;# Preferred
COPY ./app /app

# Only if needed (auto-extracts)
ADD archive.tar.gz /app/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Simplicity is security — prefer &lt;code&gt;COPY&lt;/code&gt; unless you have a very good reason.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 4: What&apos;s a multi-stage build, and when would you use it?&lt;/h2&gt;
&lt;p&gt;A &lt;a href=&quot;https://docs.docker.com/build/building/multi-stage/&quot;&gt;multi-stage build&lt;/a&gt; is when you use multiple &lt;code&gt;FROM&lt;/code&gt; statements in your Dockerfile.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The first stage does heavy work — installing dependencies, building code.&lt;/li&gt;
&lt;li&gt;The final stage copies only the necessary artifacts into a clean, minimal base image.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This reduces image size and eliminates unnecessary files and tools from production images.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-dockerfile&quot;&gt;# Stage 1 — build
FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Stage 2 — production
FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
CMD [&quot;node&quot;, &quot;dist/index.js&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Smaller images = faster deployments + fewer vulnerabilities.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 5: CMD vs ENTRYPOINT — how do they work together?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.docker.com/reference/dockerfile/#entrypoint&quot;&gt;ENTRYPOINT&lt;/a&gt; defines what runs — the main executable.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.docker.com/reference/dockerfile/#cmd&quot;&gt;CMD&lt;/a&gt; gives it default arguments.&lt;/p&gt;
&lt;p&gt;When you use &lt;a href=&quot;https://docs.docker.com/engine/reference/commandline/run/&quot;&gt;docker run&lt;/a&gt;, the arguments you pass override CMD — but not ENTRYPOINT.&lt;/p&gt;
&lt;p&gt;Together, they give you a flexible default setup that you can still tweak at runtime.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-dockerfile&quot;&gt;FROM nginx:1.28.0-alpine-slim

ENTRYPOINT [&quot;nginx&quot;]
CMD [&quot;-g&quot;, &quot;daemon off;&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Want full control at runtime? Use only CMD — and leave out ENTRYPOINT.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 6: Volumes vs Bind Mounts — which would you use in production, and why?&lt;/h2&gt;
&lt;p&gt;In production, I prefer &lt;a href=&quot;https://docs.docker.com/engine/storage/volumes/&quot;&gt;Docker-managed volumes&lt;/a&gt;.
Volumes are isolated from the host OS, easier to back up, and more stable over time.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.docker.com/engine/storage/bind-mounts/&quot;&gt;Bind mounts&lt;/a&gt; depend on host paths — which makes them fragile and environment-specific.
Bind mounts are great for local development, not for production.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;services:
  db:
    image: postgres
    volumes:
      - pg-data:/var/lib/postgresql/data

volumes:
  pg-data:
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Volumes are portable, reliable, and more future-proof across hosts and clusters.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 7: How does networking between containers work?&lt;/h2&gt;
&lt;p&gt;By default, Docker connects containers to a &lt;a href=&quot;https://docs.docker.com/engine/network/drivers/bridge/&quot;&gt;bridge network&lt;/a&gt;, where they get private IP addresses.&lt;/p&gt;
&lt;p&gt;However, they can only reach each other by IP unless you create a &lt;a href=&quot;https://docs.docker.com/engine/network/drivers/bridge/#differences-between-user-defined-bridges-and-the-default-bridge&quot;&gt;user-defined bridge network&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In a user-defined bridge network, containers can communicate by name, which simplifies service discovery.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;services:
  app:
    image: my-app
    environment:
      DB_HOST: db
      DB_USER: appuser
      DB_PASSWORD: secret
    networks:
      - app-net

  db:
    image: postgres
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: appuser
      POSTGRES_PASSWORD: secret
    networks:
      - app-net

networks:
  app-net:
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Always use &lt;strong&gt;user-defined networks&lt;/strong&gt; — the default &lt;code&gt;bridge&lt;/code&gt; network doesn&apos;t support automatic name-based discovery and can lead to frustrating connection issues.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 8: How do you reduce Docker image size, and why should you care?&lt;/h2&gt;
&lt;p&gt;Reducing image size speeds up builds, deployments, and improves security.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I start with a minimal base image — like &lt;code&gt;alpine:3.21.3&lt;/code&gt;, &lt;code&gt;python:3.12-slim-bookworm&lt;/code&gt;, or &lt;code&gt;node:20.13.1-alpine&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;I combine RUN instructions to reduce layers, and clean up any temp files or caches.&lt;/li&gt;
&lt;li&gt;I always use a &lt;code&gt;.dockerignore&lt;/code&gt; file to exclude things like &lt;code&gt;.git&lt;/code&gt;, &lt;code&gt;node_modules&lt;/code&gt;, and test data.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And for complex builds, I use multi-stage builds to separate build tools from the final runtime.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A Node.js app image can shrink from 1.2 GB to under 200 MB by switching to &lt;code&gt;node:20.13.1-alpine&lt;/code&gt; and cleaning up properly.&lt;/p&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Smaller images = faster pipelines, quicker deploys, and fewer security issues.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 9: What is BuildKit, and why use it?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.docker.com/build/buildkit/&quot;&gt;BuildKit&lt;/a&gt; is Docker&apos;s modern build engine that significantly improves performance, security, and flexibility.&lt;/p&gt;
&lt;p&gt;It enables parallel execution of independent build steps, advanced caching mechanisms, and secure handling of secrets during builds. BuildKit also supports features like multi-platform builds and efficient storage management.&lt;/p&gt;
&lt;p&gt;In modern Docker versions, BuildKit is enabled by default — so you don&apos;t need to configure anything. But if you&apos;re on an older setup, you can still enable it by setting &lt;code&gt;DOCKER_BUILDKIT=1&lt;/code&gt; or updating the Docker daemon config.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With BuildKit, multi-stage builds can run steps in parallel, reducing build times significantly.&lt;/p&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Always leverage BuildKit for faster, more secure, and efficient Docker builds.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 10: How do you handle sensitive data (like secrets) in Docker?&lt;/h2&gt;
&lt;p&gt;I never hardcode secrets into Dockerfiles or images.&lt;/p&gt;
&lt;p&gt;For local runs, I pass secrets as environment variables — either inline or via a &lt;code&gt;.env&lt;/code&gt; file. If I use a &lt;code&gt;.env&lt;/code&gt; file, I make sure to add it to &lt;code&gt;.dockerignore&lt;/code&gt; — so it doesn&apos;t accidentally get copied into the image.&lt;/p&gt;
&lt;p&gt;In production, I use secret management tools — like &lt;a href=&quot;https://developer.hashicorp.com/vault&quot;&gt;HashiCorp Vault&lt;/a&gt;, &lt;a href=&quot;https://aws.amazon.com/secrets-manager/&quot;&gt;AWS Secrets Manager&lt;/a&gt;, or &lt;a href=&quot;https://kubernetes.io/docs/concepts/configuration/secret/&quot;&gt;Kubernetes Secrets&lt;/a&gt; — to inject secrets at runtime.&lt;/p&gt;
&lt;p&gt;Secrets should always come from outside the image, not baked inside&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pass database passwords using environment variables in staging, and HashiCorp Vault in production.&lt;/p&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Good secret management = safer deployments and easier key rotations.&lt;/p&gt;
&lt;p&gt;Thanks for reading! Be sure to watch the &lt;a href=&quot;https://youtu.be/qf4fOqE345k&quot;&gt;video version&lt;/a&gt; for extra insights and helpful visuals.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Docker</category><category>Interview Questions</category><category>DevOps</category><category>Containers</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Helm in Kubernetes - What It Is and Why You Need It</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Helm simplifies Kubernetes deployments. Learn what it is, how it works, and why it&apos;s essential for managing scalable apps and infrastructure.</description><pubDate>Tue, 20 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, tech queens!&lt;/p&gt;
&lt;p&gt;Today we&apos;re talking about &lt;strong&gt;Helm&lt;/strong&gt; — my go-to tool for working with Kubernetes. If you&apos;ve ever suffered through manually crafting YAML files for every single service, you&apos;re about to &lt;em&gt;breathe a huge sigh of relief&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I used to drown in those manifests and think, “Is it always going to be this painful?” Nope. Because &lt;strong&gt;Helm exists&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Helm in Plain English&lt;/h2&gt;
&lt;p&gt;Imagine you buy a dresser from IKEA. Instead of guessing where each screw goes, you grab the instructions and have it assembled in 20 minutes - latte in hand.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Helm is that same kind of instruction manual - for Kubernetes.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Normally, deploying an app means creating a bunch of objects: Pods, Services, Ingresses, ConfigMaps — each with its own YAML file. It&apos;s tedious.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Helm saves you:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bundles everything into one structure: a &lt;em&gt;chart&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Spins up apps with a single command&lt;/li&gt;
&lt;li&gt;Simplifies upgrades, customization, and &lt;em&gt;rollbacks&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Makes deployments predictable and repeatable&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;What&apos;s a Helm Chart (and Why It&apos;s Not Scary)&lt;/h2&gt;
&lt;p&gt;The word “chart” might sound intimidating, but it&apos;s really just &lt;strong&gt;a folder with organized files&lt;/strong&gt;. No magic, just structure.&lt;/p&gt;
&lt;p&gt;Think of it as your deployment organizer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Chart.yaml&lt;/code&gt; — the chart&apos;s business card: name, version, description&lt;/li&gt;
&lt;li&gt;&lt;code&gt;values.yaml&lt;/code&gt; — default settings (ports, replicas, DB names, etc.)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;templates/&lt;/code&gt; — YAML blueprints Helm renders into actual Kubernetes objects&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_helpers.tpl&lt;/code&gt; — reusable functions to keep templates DRY&lt;/li&gt;
&lt;li&gt;&lt;code&gt;charts/&lt;/code&gt; — dependencies like databases or message queues&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Why It&apos;s Handy&lt;/h3&gt;
&lt;p&gt;A chart is like a capsule — it holds everything: instructions, configs, and dependencies.&lt;/p&gt;
&lt;p&gt;Same chart, different environments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Dev&lt;/em&gt;: &lt;code&gt;myblog-dev&lt;/code&gt;, 1 replica, test DB&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Prod&lt;/em&gt;: &lt;code&gt;myblog&lt;/code&gt;, 3 replicas, production DB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Just tweak &lt;code&gt;values.yaml&lt;/code&gt; — no need to touch anything else.&lt;/p&gt;
&lt;p&gt;It&apos;s like one dress styled with different accessories.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Why Helm Is My Must-Have&lt;/h2&gt;
&lt;p&gt;Reasons I love Helm:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Scalability:&lt;/strong&gt; no more 30+ YAML files&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexibility:&lt;/strong&gt; same chart, different setups&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparency:&lt;/strong&gt; preview what&apos;s actually going to be installed (&lt;code&gt;helm template&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security:&lt;/strong&gt; Helm 3 removed Tiller (and that&apos;s a good thing)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control:&lt;/strong&gt; rollbacks are built-in (&lt;code&gt;helm rollback&lt;/code&gt; is magic)&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;Helm 2 vs Helm 3 — Short &amp;amp; Sweet&lt;/h2&gt;
&lt;p&gt;Helm 2 relied on a separate component called &lt;em&gt;Tiller&lt;/em&gt;, which had elevated cluster privileges — a big security headache.&lt;/p&gt;
&lt;p&gt;Helm 3 fixed it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No Tiller&lt;/li&gt;
&lt;li&gt;Uses your existing &lt;code&gt;kubectl&lt;/code&gt; credentials&lt;/li&gt;
&lt;li&gt;Easier to install and great for CI/CD&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;What&apos;s Next? Helm v4 Is in the Works&lt;/h2&gt;
&lt;p&gt;Helm v4 is currently &lt;strong&gt;in planning&lt;/strong&gt; (see &lt;a href=&quot;https://github.com/helm/community/blob/main/hips/hip-0012.md&quot;&gt;HIP-0012&lt;/a&gt;) — with focus on a new API and architectural improvements.&lt;/p&gt;
&lt;p&gt;No official release date yet — the devs meet weekly and are actively shaping the roadmap.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Installing Helm — Fast &amp;amp; Painless&lt;/h2&gt;
&lt;h3&gt;You&apos;ll Need:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A Kubernetes cluster (Minikube, GKE, etc.)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubectl&lt;/code&gt; installed&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Most Universal Way&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Always use the official script from GitHub. Trust but verify.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Alternatives&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;macOS:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install helm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Homebrew now provides the latest release — &lt;strong&gt;v3.18.0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linux (Snap):&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo snap install helm --classic
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Snap can sometimes lag behind — prefer the install script for CI.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debian / Ubuntu (APT):&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | \
sudo tee /usr/share/keyrings/helm.gpg &amp;gt; /dev/null

echo &quot;deb [signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main&quot; | \
sudo tee /etc/apt/sources.list.d/helm-stable-debian.list

sudo apt-get update
sudo apt-get install helm
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Verify the Install&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sample output:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;version.BuildInfo{Version:&quot;v3.18.0&quot;, GitCommit:&quot;...&quot;, GoVersion:&quot;go1.22.2&quot;, ...}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As of &lt;strong&gt;May 20, 2025&lt;/strong&gt;, this is the latest stable release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;v3.18.1&lt;/strong&gt; is expected on &lt;strong&gt;June 11&lt;/strong&gt;, and &lt;strong&gt;v3.19.0&lt;/strong&gt; is coming in &lt;strong&gt;September&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;First Helm Run — Let&apos;s Go!&lt;/h2&gt;
&lt;p&gt;Install something fun — like Nginx:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm install nginx bitnami/nginx
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Customize settings:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm install my-app ./my-chart \
 --set image.tag=2.0.1 --set replicaCount=3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or use a YAML config:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm install my-app ./my-chart -f values-prod.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Something went wrong?&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm rollback my-app 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Uninstall it:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm uninstall my-app
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Security &amp;amp; Best Practices&lt;/h2&gt;
&lt;h3&gt;Always Inspect a Chart Before Installing&lt;/h3&gt;
&lt;p&gt;Think of it like trying on a dress before the party - just because it looks cute doesn&apos;t mean it fits.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;helm lint&lt;/code&gt; — checks the structure and versioning of the chart&lt;/li&gt;
&lt;li&gt;&lt;code&gt;helm template&lt;/code&gt; — renders the final YAML (preview before install)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;helm test&lt;/code&gt; — runs built-in tests (if defined)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;helm diff&lt;/code&gt; — compares installed vs new version&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Install the &lt;strong&gt;diff plugin&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm plugin install https://github.com/databus23/helm-diff
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Sign and Verify Your Charts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;helm package --sign&lt;/code&gt; to digitally sign your charts&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;helm verify&lt;/code&gt; to confirm integrity&lt;/li&gt;
&lt;li&gt;For advanced signing, try &lt;strong&gt;Cosign&lt;/strong&gt; + the &lt;code&gt;helm-sigstore&lt;/code&gt; plugin&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Store Charts Like Images (OCI FTW)&lt;/h3&gt;
&lt;p&gt;Helm now supports pushing/pulling from OCI registries:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;helm push mychart.tgz oci://registry.example.com/charts
helm pull oci://registry.example.com/charts/mychart --version 1.2.3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you&apos;re using older tools like ChartMuseum, clarify that separately.&lt;/p&gt;
&lt;h3&gt;Mind Your Versions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Watch for &lt;strong&gt;version skew&lt;/strong&gt; between Helm and Kubernetes&lt;/li&gt;
&lt;li&gt;Don&apos;t upgrade Helm right before a production deploy — stability first!&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Takeaway&lt;/h2&gt;
&lt;p&gt;Helm is &lt;strong&gt;my DevOps bestie&lt;/strong&gt;. It brings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Organization&lt;/li&gt;
&lt;li&gt;Repeatable configuration&lt;/li&gt;
&lt;li&gt;And a lot less Kubernetes chaos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&apos;re working with Kubernetes, get familiar with Helm.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It 100% deserves a spot in your toolkit.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Kubernetes</category><category>Helm</category><category>Orchestration</category><category>Cloud Native</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Your First Git Commit - A Beginner-Friendly Guide to Version Control</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>A simple Git tutorial for beginners. Learn how to install Git, set it up, and make your first commit — no experience needed.</description><pubDate>Mon, 12 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, tech queens! 👩‍💻✨&lt;/p&gt;
&lt;p&gt;If you&apos;ve ever seen the word &lt;em&gt;Git&lt;/em&gt; and thought:&lt;/p&gt;
&lt;p&gt;“Okay, this sounds important… but also kind of intimidating?”&lt;/p&gt;
&lt;p&gt;You&apos;re not alone.&lt;/p&gt;
&lt;p&gt;But here&apos;s the good news: Git isn&apos;t scary — it&apos;s an essential tool that&apos;ll make your coding life much easier.&lt;/p&gt;
&lt;p&gt;Let&apos;s walk through your first Git setup and commit, step by step — no jargon, no stress.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What Is Git, Really?&lt;/h2&gt;
&lt;p&gt;Think of your code like a project notebook. You want to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;save versions as you go,&lt;/li&gt;
&lt;li&gt;undo mistakes,&lt;/li&gt;
&lt;li&gt;and maybe work on it with other people — without chaos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Git is the version control system that makes all of that possible.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It helps you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;snapshot your work at any time,&lt;/li&gt;
&lt;li&gt;roll back if something breaks,&lt;/li&gt;
&lt;li&gt;and collaborate smoothly with others.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Installing Git (No Stress, Just Steps)&lt;/h2&gt;
&lt;h3&gt;On macOS&lt;/h3&gt;
&lt;p&gt;Open Terminal and run:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;brew install git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
Homebrew must be installed beforehand.
:::&lt;/p&gt;
&lt;p&gt;If your Mac prompts you to install Xcode Command Line Tools, accept it — that&apos;s normal.&lt;/p&gt;
&lt;h3&gt;On Windows&lt;/h3&gt;
&lt;p&gt;Simplest method: download Git from &lt;a href=&quot;https://git-scm.com/downloads&quot;&gt;git-scm.com&lt;/a&gt;. It includes &lt;strong&gt;Git Bash&lt;/strong&gt;, which gives you a helpful command-line interface.&lt;/p&gt;
&lt;p&gt;Prefer using the terminal?&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;winget install --id Git.Git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(Works on Windows 10 1809+ and Windows 11.)&lt;/p&gt;
&lt;h3&gt;On Linux&lt;/h3&gt;
&lt;p&gt;For Debian/Ubuntu:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo apt-get install git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For Fedora:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo dnf install git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For Arch-based systems:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo pacman -S git
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Check the Installation&lt;/h3&gt;
&lt;p&gt;Make sure Git is installed with:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you see a version number, you&apos;re all set.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Configure Git (Just Once)&lt;/h2&gt;
&lt;p&gt;Git tags your work with your name and email so you can track who made which changes — even if it&apos;s just you.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git config --global user.name &quot;Your Name&quot;
git config --global user.email &quot;you@example.com&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Set &lt;code&gt;main&lt;/code&gt; as the default branch name (instead of the older &lt;code&gt;master&lt;/code&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git config --global init.defaultBranch main
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Optional: avoid using Vim by default (it can be confusing for beginners). Use something simpler like &lt;code&gt;nano&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git config --global core.editor &quot;nano&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Prefer VS Code? Use:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git config --global core.editor &quot;code --wait&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Creating Your First Repository&lt;/h2&gt;
&lt;p&gt;Create a new folder for your project and initialize Git inside it:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir my-first-repo &amp;amp;&amp;amp; cd my-first-repo
git init
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You now have a Git repository — a versioned folder ready to track changes.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Add a File and Make Your First Commit&lt;/h2&gt;
&lt;p&gt;Let&apos;s create a basic file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo &quot;Hello, Git!&quot; &amp;gt; README.md
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
File names like README.md and readme.md are treated the same on macOS and Windows, but they&apos;re different on Linux — case matters.
:::&lt;/p&gt;
&lt;p&gt;Check Git&apos;s status:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git status
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It will show the new file but mark it as &lt;em&gt;untracked&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Tell Git to track it:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git add README.md
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now make your first commit:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git commit -m &quot;Add README&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Done — your first snapshot is saved in Git history!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Bonus: Use &lt;code&gt;.gitignore&lt;/code&gt; to Keep Things Clean&lt;/h2&gt;
&lt;p&gt;You might have folders or files you don&apos;t want to track — like &lt;code&gt;node_modules&lt;/code&gt;, log files, or build output.&lt;/p&gt;
&lt;p&gt;Create a &lt;code&gt;.gitignore&lt;/code&gt; file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo &quot;node_modules/&quot; &amp;gt; .gitignore
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Want help generating one for your tech stack? Check out &lt;a href=&quot;https://www.toptal.com/developers/gitignore&quot;&gt;gitignore.io&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Optional (But Handy) - Windows Line Ending Fix&lt;/h2&gt;
&lt;p&gt;If you&apos;re on Windows and see warnings like “LF will be replaced by CRLF,” run:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git config --global core.autocrlf true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This helps avoid annoying line ending issues between systems.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Make Things Faster with Aliases&lt;/h2&gt;
&lt;p&gt;Tired of typing full commands? Set up aliases:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now you can use &lt;code&gt;git st&lt;/code&gt; instead of &lt;code&gt;git status&lt;/code&gt;. Shortcuts = efficiency.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Prefer GUIs Over Command Line?&lt;/h2&gt;
&lt;p&gt;If the terminal isn&apos;t your thing (yet), try a visual interface:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://desktop.github.com/&quot;&gt;&lt;strong&gt;GitHub Desktop&lt;/strong&gt;&lt;/a&gt; — beginner-friendly and intuitive&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.sourcetreeapp.com/&quot;&gt;&lt;strong&gt;Sourcetree&lt;/strong&gt;&lt;/a&gt; — more advanced but still beginner-usable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can always switch to the terminal when you feel ready.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Quick Cheat Sheet&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates a Git repo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Shows changes and file states&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git add&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Stages files for commit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git commit -m &quot;&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Saves a snapshot with a message&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git config&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sets global Git settings (name, editor, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;You Did It&lt;/h2&gt;
&lt;p&gt;You installed Git, configured it, created a repo, and made your first commit.&lt;/p&gt;
&lt;p&gt;That&apos;s a big step in your dev journey — version control is a core skill for any developer.&lt;/p&gt;
&lt;p&gt;Now you&apos;ve got the tools and confidence to take control of your projects.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>Guides &amp; Tutorials</category><category>Git</category><category>Version Control</category><category>Beginners</category><category>Development</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Best CI/CD Tool in 2025? GitHub Actions vs GitLab CI vs Argo Workflows</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Compare GitHub Actions, GitLab CI, and Argo Workflows in 2025 — and find out which CI/CD tool best fits your team and pipeline.</description><pubDate>Sun, 11 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you&apos;re working with CI/CD, cloud platforms, or just trying to make your pipelines less messy, you&apos;re in the right place. Because today we&apos;re talking about a question many teams face:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Which CI/CD tool actually makes sense in 2025?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Not in theory — in real life.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/features/actions&quot;&gt;GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.gitlab.com/ci/&quot;&gt;GitLab CI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://argo-workflows.readthedocs.io/en/stable/&quot;&gt;Argo Workflows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They&apos;re all good. But which one fits &lt;em&gt;your&lt;/em&gt; team?&lt;/p&gt;
&lt;p&gt;Let&apos;s break it down together.&lt;/p&gt;
&lt;p&gt;import VideoPlayer from &quot;@components/VideoPlayer.astro&quot;;&lt;/p&gt;
&lt;p&gt;&amp;lt;VideoPlayer
videoId=&quot;20Pr6g6iWpI&quot;
title=&quot;Best CI/CD Tool in 2025? GitHub Actions vs GitLab CI vs Argo Workflows&quot;
/&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;First, let&apos;s set the stage&lt;/h2&gt;
&lt;p&gt;CI/CD isn&apos;t just “run tests and deploy” anymore.&lt;/p&gt;
&lt;p&gt;Now it&apos;s about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;security,&lt;/li&gt;
&lt;li&gt;rollbacks,&lt;/li&gt;
&lt;li&gt;environments,&lt;/li&gt;
&lt;li&gt;infrastructure as code,&lt;/li&gt;
&lt;li&gt;and observability.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pipelines aren&apos;t just scripts anymore — they&apos;re part of your system&apos;s core.&lt;/p&gt;
&lt;p&gt;And the tool you choose shapes how your team builds, ships, and fixes things every day.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;GitHub Actions&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;It&apos;s built right into GitHub.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Add a &lt;code&gt;.yml&lt;/code&gt; file, grab a few Marketplace actions, and you&apos;ve got a working pipeline.&lt;/p&gt;
&lt;p&gt;For small projects? It works great:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;frontend apps&lt;/li&gt;
&lt;li&gt;Docker builds&lt;/li&gt;
&lt;li&gt;deployments to S3, ECS, or Lambda&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&apos;s fast, simple, and easy to get started with.&lt;/p&gt;
&lt;h3&gt;It&apos;s great… until things start to grow and get a bit more complicated.&lt;/h3&gt;
&lt;p&gt;As the project grows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;you add more steps&lt;/li&gt;
&lt;li&gt;jobs trigger other jobs&lt;/li&gt;
&lt;li&gt;secrets start piling up&lt;/li&gt;
&lt;li&gt;and debugging turns into trial and error&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Suddenly, things feel fragile — like one small change might break everything.&lt;/p&gt;
&lt;p&gt;That&apos;s usually the moment teams start looking for something more stable — like &lt;a href=&quot;https://docs.gitlab.com/ci/&quot;&gt;GitLab CI&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;GitLab CI&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;GitLab CI isn&apos;t flashy, but it&apos;s solid.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Everything lives in one file — &lt;code&gt;.gitlab-ci.yml&lt;/code&gt;.
You define jobs, stages, environments, approvals — all in one place.&lt;/p&gt;
&lt;p&gt;It gives you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;consistency&lt;/li&gt;
&lt;li&gt;built-in security checks&lt;/li&gt;
&lt;li&gt;preview environments&lt;/li&gt;
&lt;li&gt;full visibility from commit to production&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once it&apos;s set up, it stays out of your way and just works.&lt;/p&gt;
&lt;p&gt;It&apos;s great for teams that ship often and need predictability more than bells and whistles.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Argo Workflows&lt;/h2&gt;
&lt;p&gt;But what if you need more than predictability?&lt;/p&gt;
&lt;p&gt;What if your pipeline isn&apos;t just for deployments but part of the product itself?&lt;/p&gt;
&lt;p&gt;That&apos;s where &lt;a href=&quot;https://argo-workflows.readthedocs.io/en/stable/&quot;&gt;Argo Workflows&lt;/a&gt; comes in.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Argo isn&apos;t just a CI/CD tool&lt;/strong&gt; — it&apos;s a full-on pipeline engine for Kubernetes.&lt;/p&gt;
&lt;p&gt;You define workflows as DAGs — &lt;em&gt;Directed Acyclic Graphs&lt;/em&gt;.
Each step runs as its own pod.
Dependencies are clear.
Everything is observable.&lt;/p&gt;
&lt;p&gt;It&apos;s great for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ML training&lt;/li&gt;
&lt;li&gt;ETL pipelines&lt;/li&gt;
&lt;li&gt;staged microservice deploys&lt;/li&gt;
&lt;li&gt;or anything that reacts to events&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Argo gives you full control and visibility — right inside the cluster.&lt;/p&gt;
&lt;h3&gt;But let&apos;s be honest: it&apos;s not beginner-friendly.&lt;/h3&gt;
&lt;p&gt;You&apos;ll need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Helm&lt;/li&gt;
&lt;li&gt;RBAC&lt;/li&gt;
&lt;li&gt;persistent storage&lt;/li&gt;
&lt;li&gt;ingress setup&lt;/li&gt;
&lt;li&gt;and a team that can manage the whole thing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Argo isn&apos;t something you “just try.”&lt;/p&gt;
&lt;p&gt;It&apos;s for teams that treat pipelines as real infrastructure — because that&apos;s what they are.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;They All Have Their Place&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;And that&apos;s true for all of them — GitHub Actions, GitLab CI, Argo.&lt;/strong&gt;
They all have their place.&lt;/p&gt;
&lt;p&gt;So — how do all these tools actually hold up when it&apos;s not just a side project, but real production work?&lt;/p&gt;
&lt;p&gt;Let&apos;s compare real-world usage — the good and the painful.&lt;/p&gt;
&lt;h3&gt;GitHub Actions:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Great for small, fast-moving projects&lt;/li&gt;
&lt;li&gt;If you&apos;ve got fewer than 10 jobs, it&apos;s smooth&lt;/li&gt;
&lt;li&gt;But beyond that? It can get messy fast&lt;/li&gt;
&lt;li&gt;Debugging turns into guesswork&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;GitLab CI:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Works well for teams with structure&lt;/li&gt;
&lt;li&gt;Supports approvals, environments, and solid release flows&lt;/li&gt;
&lt;li&gt;It&apos;s quiet, reliable, and gets out of your way&lt;/li&gt;
&lt;li&gt;Which is exactly what you want at scale&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Argo Workflows:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;This is for when &lt;strong&gt;delivery is the product&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;When pipelines aren&apos;t just support tools, but essential parts of your platform&lt;/li&gt;
&lt;li&gt;It&apos;s complex, but if your team&apos;s ready — it&apos;s incredibly powerful&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;The Real Test: When Something Breaks&lt;/h2&gt;
&lt;p&gt;Not in a demo. Not on a sunny-day deploy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When it&apos;s Friday at 4 PM, someone just merged to main…&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ve closed your laptop, grabbed your bag —
And then Slack pings: &lt;em&gt;“deployment failed.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s when your CI/CD setup shows its true colors.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Choose What Fits Your Team&lt;/h2&gt;
&lt;p&gt;So yeah, the tools you pick &lt;em&gt;do&lt;/em&gt; matter.&lt;/p&gt;
&lt;p&gt;We&apos;ve looked at the trade-offs, the patterns, and the pain points.&lt;/p&gt;
&lt;p&gt;Now it&apos;s your turn to decide what fits your team — and your reality.&lt;/p&gt;
&lt;p&gt;What&apos;s going to keep your pipelines healthy and your Fridays peaceful?&lt;/p&gt;
&lt;p&gt;Thanks for reading! Be sure to watch the &lt;a href=&quot;https://youtu.be/20Pr6g6iWpI&quot;&gt;video version&lt;/a&gt; for extra insights and helpful visuals.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>CI/CD</category><category>DevOps</category><category>GitHub</category><category>GitLab</category><category>ArgoCD</category><category>GitOps</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>What Actually Runs the Internet? A No-Stress Guide to Containers &amp; Kubernetes</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Discover how containers, Docker, Kubernetes &amp; ContainerD power modern apps — explained simply, even for total beginners.</description><pubDate>Mon, 05 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, brilliant tech minds (and future ones too)! 👩‍💻✨&lt;/p&gt;
&lt;p&gt;You&apos;ve probably heard words like Docker, Kubernetes, or ContainerD flying around in tech convos (or LinkedIn posts you scroll past 😅). But what &lt;em&gt;actually&lt;/em&gt; are they? And do you really need to know?&lt;/p&gt;
&lt;p&gt;Short answer: &lt;strong&gt;YES&lt;/strong&gt; — especially if you want to sound like &lt;em&gt;that girl&lt;/em&gt; in tech and truly understand what makes apps like Netflix, Zoom, and Spotify tick. Let&apos;s break it down — no jargon, just good vibes and relatable examples. 💁‍♀️✨&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Imagine You&apos;re Baking Cookies&lt;/h2&gt;
&lt;p&gt;Stay with me — this actually makes sense.&lt;/p&gt;
&lt;p&gt;You&apos;ve got the perfect cookie recipe. It&apos;s so good that you want people all over the world to bake the exact same cookies. But what if someone forgets sugar? Or uses the wrong oven temp?&lt;/p&gt;
&lt;p&gt;So, genius you packs everything into a cute little cookie kit: ingredients, step-by-step instructions, even the timer. Now, anyone, anywhere, can make the same perfect batch. 💅&lt;/p&gt;
&lt;p&gt;That&apos;s what &lt;strong&gt;containers&lt;/strong&gt; are in the tech world. They&apos;re like little kits that package everything an app needs — the code, the tools, the settings — so it runs &lt;em&gt;exactly&lt;/em&gt; the same no matter where it is: on your laptop, in the cloud, wherever.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Meet Docker — the Container Queen&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt; is the tool that makes those little cookie kits (a.k.a. containers). It helps devs bundle up apps so they can run anywhere, easily.&lt;/p&gt;
&lt;p&gt;Think of Docker as your fave meal-prep delivery service. It makes the packing and shipping of apps smooth and fast. One command — boom — your app is packaged, ready to ship. 💨&lt;/p&gt;
&lt;p&gt;But wait — what happens when you have a &lt;em&gt;lot&lt;/em&gt; of containers to manage? Like, dozens of them? That&apos;s where it gets spicy…&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Kubernetes: Your App&apos;s Event Planner&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt; is like the logistics queen who makes sure everything runs perfectly — containers launching at the right time, recovering when they crash, scaling when there&apos;s more demand.&lt;/p&gt;
&lt;p&gt;Here&apos;s what Kubernetes does:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keeps your app running if something breaks&lt;/li&gt;
&lt;li&gt;Spins up more containers when things get busy&lt;/li&gt;
&lt;li&gt;Updates stuff behind the scenes without breaking the app&lt;/li&gt;
&lt;li&gt;Basically? It&apos;s the ultimate control freak — in a good way&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Think: a super-organized girlboss project manager who &lt;em&gt;never&lt;/em&gt; misses a beat. 👩‍💼💅&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;And Then There&apos;s ContainerD — the Quiet One&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;ContainerD&lt;/strong&gt; might sound like the awkward cousin at the tech party — but don&apos;t underestimate it.&lt;/p&gt;
&lt;p&gt;Back in the day, Docker did &lt;em&gt;everything&lt;/em&gt; — packaging, running, managing. But that got messy. So smart tech folks decided to split things up.&lt;/p&gt;
&lt;p&gt;ContainerD is now the lightweight tool that handles just one job: &lt;strong&gt;running containers&lt;/strong&gt;. No drama, no distractions.&lt;/p&gt;
&lt;p&gt;And here&apos;s the tea: &lt;strong&gt;Kubernetes now uses ContainerD directly instead of Docker.&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;(Because Docker isn&apos;t just a runtime — it&apos;s a full suite of tools. Kubernetes only needs the “engine” part to do its job.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Psst — if you ever hear the word &lt;strong&gt;CRI&lt;/strong&gt; floating around, here&apos;s the scoop:&lt;br /&gt;
&lt;strong&gt;CRI (Container Runtime Interface)&lt;/strong&gt; is just how Kubernetes &lt;em&gt;talks&lt;/em&gt; to runtimes like ContainerD. That&apos;s it. Nothing scary.&lt;/p&gt;
&lt;p&gt;TL;DR? Docker&apos;s still fab for development, but in the big leagues (like production apps), &lt;strong&gt;Kubernetes + ContainerD = power duo&lt;/strong&gt;. 💪&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;So Why Should You Even Care?&lt;/h2&gt;
&lt;p&gt;Even if you&apos;re not writing code, understanding how modern apps run is like knowing how your iPhone or Wi-Fi works. It&apos;s just part of being tech-savvy in 2025.&lt;/p&gt;
&lt;p&gt;Let&apos;s recap:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Containers&lt;/strong&gt; = app-in-a-box&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker&lt;/strong&gt; = the packer/delivery girl&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt; = the event planner/project manager&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ContainerD&lt;/strong&gt; = the lowkey engine that runs the whole show&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is the invisible magic behind your fave platforms. And now? You&apos;re officially smarter than 90% of the internet. ✨📲&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Containers</category><category>Kubernetes</category><category>Internet</category><category>Cloud Computing</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>How Generative AI Actually Understands You</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Discover how generative AI understands text, images, video, and sound — explained simply with real examples of tokens, chunks, and embeddings.</description><pubDate>Mon, 28 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, lovely tech queens! 👩‍💻✨&lt;/p&gt;
&lt;p&gt;You&apos;ve probably seen AI writing blog posts, drawing epic art, narrating stories, and even making short films.&lt;/p&gt;
&lt;p&gt;But how does it &lt;em&gt;actually&lt;/em&gt; know what you&apos;re asking for?&lt;/p&gt;
&lt;p&gt;Spoiler: it&apos;s not magic — just smart logic, broken into pieces. Like digital LEGO bricks.&lt;/p&gt;
&lt;p&gt;Let me break it down for you — simple, fun, and drama-free.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;1. What Are Tokens?&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Words, but chopped into snackable bites&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;AI doesn&apos;t “read” like you and me. It breaks everything you type into little pieces called &lt;strong&gt;tokens&lt;/strong&gt;. That could be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a full word (“coffee”)&lt;/li&gt;
&lt;li&gt;part of a word (“pro” + “duct”)&lt;/li&gt;
&lt;li&gt;or even a symbol (“!”)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You type: &lt;em&gt;“Make me a text about cats”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The AI sees: &lt;code&gt;[“Make”, “me”, “a”, “text”, “about”, “cat”, “s”]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Why? Because tokens are easy to turn into numbers. And numbers = AI&apos;s love language.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;2. What&apos;s Chunking?&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Think: &quot;Don&apos;t overwhelm the poor bot&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Even the biggest models have a token limit.&lt;/p&gt;
&lt;p&gt;So when your input is long — AI breaks it into &lt;strong&gt;chunks&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Like slicing a pizza: same flavor, easier to handle.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;3. What Are Embeddings?&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Turning words into vibes (aka numbers)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;AI doesn&apos;t “know” that pizza is tasty. But it turns every token into a set of numbers — called an &lt;strong&gt;embedding&lt;/strong&gt; — that shows what the word means &lt;em&gt;and&lt;/em&gt; how it connects to others.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“pizza”, “cheese” and “pepperoni” will have similar embeddings.&lt;br /&gt;
“pizza” and “printer”? Not so much.&lt;/p&gt;
&lt;p&gt;It&apos;s like every word has a location on a map — and similar vibes live near each other.&lt;/p&gt;
&lt;p&gt;But wait — what about images and videos?!&lt;/p&gt;
&lt;p&gt;Oh girl, this is where it gets spicy. Let me show you:&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;4. How AI Creates Images&lt;/h2&gt;
&lt;p&gt;Tools like &lt;strong&gt;DALL·E&lt;/strong&gt;, &lt;strong&gt;Midjourney&lt;/strong&gt; and &lt;strong&gt;Stable Diffusion&lt;/strong&gt; can turn words into gorgeous visuals.&lt;/p&gt;
&lt;p&gt;You type:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“A cat wearing a hoodie drinking latte on a Tokyo rooftop”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s what happens:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The prompt turns into tokens&lt;/li&gt;
&lt;li&gt;Tokens → embeddings&lt;/li&gt;
&lt;li&gt;AI pulls what it knows about cats, hoodies, lattes &amp;amp; Tokyo&lt;/li&gt;
&lt;li&gt;Then it &lt;strong&gt;generates&lt;/strong&gt; a whole new image — pixel by pixel&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It&apos;s not copying. It&apos;s imagining.&lt;/p&gt;
&lt;p&gt;Like a creative bestie who&apos;s trained on billions of Pinterest boards.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;5. How AI Makes Videos&lt;/h2&gt;
&lt;p&gt;Now it gets cinematic.&lt;/p&gt;
&lt;p&gt;Models like &lt;strong&gt;Runway Gen-2&lt;/strong&gt; and &lt;strong&gt;Pika Labs&lt;/strong&gt; are making full videos from just text prompts.&lt;/p&gt;
&lt;p&gt;You type:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“A goldfish flying through space”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Boom — short movie.&lt;/p&gt;
&lt;p&gt;Here&apos;s the magic:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It creates the first frame like a still image&lt;/li&gt;
&lt;li&gt;Then builds more, one by one&lt;/li&gt;
&lt;li&gt;Adds smooth transitions, motion, and vibe&lt;/li&gt;
&lt;li&gt;Glues it all together as a video&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Basically: AI = your personal animation studio.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;6. How AI Understands Sound&lt;/h2&gt;
&lt;p&gt;With tools like &lt;strong&gt;ElevenLabs&lt;/strong&gt;, &lt;strong&gt;Suno&lt;/strong&gt;, or &lt;strong&gt;MusicLM&lt;/strong&gt;, AI can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read your text out loud (like, &lt;em&gt;perfectly&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Create music from a vibe&lt;/li&gt;
&lt;li&gt;Analyze your voice for emotion or tone&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You write: &lt;em&gt;“Say it like you&apos;re a TED speaker hyping the crowd”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;AI delivers with energy and sparkle.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Why Should You Even Care?&lt;/h2&gt;
&lt;p&gt;Because when you get how AI &lt;em&gt;thinks&lt;/em&gt;, you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Write 10x better prompts&lt;/li&gt;
&lt;li&gt;Stop being scared of words like “token” and “embedding”&lt;/li&gt;
&lt;li&gt;Use AI like a pro, not a guessing game&lt;/li&gt;
&lt;li&gt;Can explain it to your boss, your bestie, or your future investor&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Let&apos;s Wrap This Up:&lt;/h2&gt;
&lt;p&gt;AI doesn&apos;t read minds.
But it does:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Break your words into &lt;strong&gt;tokens&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Turn them into &lt;strong&gt;numbers (embeddings)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Use patterns it learned to &lt;strong&gt;predict&lt;/strong&gt; what you want&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And then — boom.&lt;/p&gt;
&lt;p&gt;Text, image, video, sound — whatever your imagination served, it delivers.&lt;/p&gt;
&lt;p&gt;AI isn&apos;t magic. But it &lt;em&gt;is&lt;/em&gt; insanely good at pattern recognition.&lt;/p&gt;
&lt;p&gt;And now that you speak its language, you&apos;re basically unstoppable.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>AI &amp; MLOps</category><category>Generative AI</category><category>AI</category><category>LLM</category><category>Understanding</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>How AI Models Are Really Trained - From Idea to Reality</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Learn how AI models are trained step by step — from data prep to deployment. Simple, beginner-friendly guide with real-life examples.</description><pubDate>Sun, 20 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey girls! And you, smart tech kings, too!&lt;/p&gt;
&lt;p&gt;AI is everywhere — in your phone, your feed, your shopping cart.
But how does it actually work behind the scenes?&lt;/p&gt;
&lt;p&gt;Let&apos;s break it down:&lt;/p&gt;
&lt;p&gt;How do AI models get built, trained, and sent out into the world?&lt;/p&gt;
&lt;p&gt;It&apos;s not magic. It&apos;s not sci-fi.
It&apos;s a step-by-step process — and I&apos;m going to walk you through all of it, beginner-style.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;1. Start With a Real Problem — Not “Let&apos;s Just Do AI”&lt;/h2&gt;
&lt;p&gt;Before any coding or fancy model building, there has to be a reason.&lt;/p&gt;
&lt;p&gt;Companies don&apos;t build AI “just because.” They ask:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Can we reduce product returns?&lt;/li&gt;
&lt;li&gt;Spot fake reviews faster?&lt;/li&gt;
&lt;li&gt;Recommend better stuff to users?&lt;/li&gt;
&lt;li&gt;Predict when a machine will break?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;First step:&lt;/strong&gt; Know exactly what you&apos;re solving.&lt;/p&gt;
&lt;p&gt;If you skip this, the model might be cool — but totally useless.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;2. Collect and Clean the Data (aka Your Model&apos;s Food)&lt;/h2&gt;
&lt;p&gt;Let&apos;s say you want to predict which customers might leave your app.&lt;/p&gt;
&lt;p&gt;You&apos;ll need data like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When they joined&lt;/li&gt;
&lt;li&gt;How often they log in&lt;/li&gt;
&lt;li&gt;What they clicked&lt;/li&gt;
&lt;li&gt;If they stayed or left&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But data doesn&apos;t come cute and clean. Ever.&lt;/p&gt;
&lt;p&gt;So first, you clean it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Remove typos, duplicates, and empty cells&lt;/li&gt;
&lt;li&gt;Format everything consistently&lt;/li&gt;
&lt;li&gt;Spot any weirdness (like someone logging in 300 times a day — um, bot?)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Think of this as skincare for your model:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you skip the cleansing, nothing else will work right.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;3. Split the Data: Train, Validate, Test&lt;/h2&gt;
&lt;p&gt;Now that your data&apos;s clean, don&apos;t toss it all into the model at once.&lt;/p&gt;
&lt;p&gt;Split it into:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Training set:&lt;/strong&gt; Where your model learns&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validation set:&lt;/strong&gt; To check progress while it learns&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test set:&lt;/strong&gt; To see if it actually works in real life&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Imagine baking cookies:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Training = practicing the recipe&lt;/li&gt;
&lt;li&gt;Validation = taste-testing as you go&lt;/li&gt;
&lt;li&gt;Testing = sharing with friends to see if they love them (or not)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A common split is 80/10/10 — but it depends on your project.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;4. Train the Model (Finally!)&lt;/h2&gt;
&lt;p&gt;Now the real fun begins — your model starts to “learn.”&lt;/p&gt;
&lt;p&gt;But how?&lt;/p&gt;
&lt;p&gt;Let&apos;s say you give it emails labeled “spam” or “not spam.”&lt;/p&gt;
&lt;p&gt;The model:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Makes a guess&lt;/li&gt;
&lt;li&gt;Checks the answer&lt;/li&gt;
&lt;li&gt;Adjusts if it&apos;s wrong&lt;/li&gt;
&lt;li&gt;Tries again&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It repeats this thousands of times until it gets better at spotting patterns.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It&apos;s not memorizing — it&apos;s learning how to generalize.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Like, “If the subject line says FREE MONEY!!!... hmm, might be spam.”&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;5. Tune the Model — Like Tweaking a Recipe&lt;/h2&gt;
&lt;p&gt;Even after training, your model might need fine-tuning.&lt;/p&gt;
&lt;p&gt;This is called &lt;strong&gt;hyperparameter tuning&lt;/strong&gt; — sounds intimidating, but it&apos;s not.&lt;/p&gt;
&lt;p&gt;Think of it like adjusting a cookie recipe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add more vanilla?&lt;/li&gt;
&lt;li&gt;Bake longer?&lt;/li&gt;
&lt;li&gt;Lower the oven temp?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In model terms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Learning rate&lt;/li&gt;
&lt;li&gt;Number of layers&lt;/li&gt;
&lt;li&gt;Batch size&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And guess what? Tools like &lt;strong&gt;Amazon SageMaker&lt;/strong&gt; can tune this stuff automatically.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;6. Evaluate the Model — Is It Actually Good?&lt;/h2&gt;
&lt;p&gt;Before launch, you have to test the model on data it hasn&apos;t seen before.&lt;/p&gt;
&lt;p&gt;We use metrics like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accuracy:&lt;/strong&gt; How often is it right?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Precision:&lt;/strong&gt; When it says “yes,” is it correct?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recall:&lt;/strong&gt; Did it find all the real “yeses”?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;F1 Score:&lt;/strong&gt; A balance of precision and recall&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If your model says “this customer will leave” —&lt;br /&gt;
Precision = how often it&apos;s right.&lt;br /&gt;
Recall = how many of the leaving customers it actually found.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;7. Deploy the Model — Send It Into the World&lt;/h2&gt;
&lt;p&gt;Once your model is trained and tested, it&apos;s time to let it do its job!&lt;/p&gt;
&lt;p&gt;There are two common ways to use it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Real-time&lt;/strong&gt; — for instant decisions (like chatbots or spam filters)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Batch&lt;/strong&gt; — for scheduled jobs (like weekly reports or daily analysis)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You&apos;ll often use cloud tools to make this happen (like some from Amazon — SageMaker, for example).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Don&apos;t worry if these sound unfamiliar&lt;/strong&gt; — you don&apos;t need to be an engineer to understand the process. Think of them as the behind-the-scenes crew helping your model go live.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;8. Monitor and Update — Your Model Still Needs You&lt;/h2&gt;
&lt;p&gt;Just because it&apos;s deployed doesn&apos;t mean you&apos;re done.&lt;/p&gt;
&lt;p&gt;The world changes. People change. So the model needs to adapt.&lt;/p&gt;
&lt;p&gt;You (or your tools) will:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Track weird predictions&lt;/li&gt;
&lt;li&gt;Notice when performance drops&lt;/li&gt;
&lt;li&gt;Retrain the model with new data if needed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Think of it like skincare touch-ups — even the best routine needs updates.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Quick Recap — 8 Steps to Train a Model:&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;What&apos;s Happening&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Define a real business problem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Collect and clean the data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Split data into train / val / test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Train the model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Tune it (aka adjust the settings)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Test it with unseen data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Deploy it to do real work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Monitor and retrain when needed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;Final Thoughts (From a Girl Who Gets It)&lt;/h2&gt;
&lt;p&gt;If you thought training a model meant pressing a button… now you know it&apos;s way more than that.&lt;/p&gt;
&lt;p&gt;But also? It&apos;s totally doable.&lt;/p&gt;
&lt;p&gt;When you break it into simple steps, everything starts to click.&lt;/p&gt;
&lt;p&gt;Whether you want to build models, manage AI teams, or just sound confident when someone says “pipeline” — &lt;strong&gt;you&apos;ve got this&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Stay curious. Keep learning.&lt;/p&gt;
&lt;p&gt;And remember: great models run on clean data and smart decisions — just like you.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>AI &amp; MLOps</category><category>AI</category><category>ML</category><category>Training</category><category>Models</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Is Kubernetes Overkill? Why You Probably Don&apos;t Need It</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Is Kubernetes overkill for your app? Learn when it adds complexity, when it&apos;s worth it, and which simpler, scalable alternatives might fit better.</description><pubDate>Sat, 19 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today, we&apos;re diving into a question that more and more teams are starting to ask:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Is Kubernetes overkill?&lt;/strong&gt; And maybe more importantly, &lt;strong&gt;why do we keep spinning up clusters for things that don&apos;t actually need them?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let&apos;s start with this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://kubernetes.io/&quot;&gt;Kubernetes&lt;/a&gt; is powerful. Many of us use it daily, and it solves real problems. But let&apos;s not pretend it&apos;s always the right solution.&lt;/p&gt;
&lt;p&gt;Because sometimes? &lt;strong&gt;It adds more complexity than it removes.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So, let&apos;s talk honestly about when Kubernetes fits — and when it absolutely doesn&apos;t.&lt;/p&gt;
&lt;p&gt;import VideoPlayer from &quot;@components/VideoPlayer.astro&quot;;&lt;/p&gt;
&lt;p&gt;&amp;lt;VideoPlayer
videoId=&quot;BLMQx-MM4Io&quot;
title=&quot;Is Kubernetes Overkill? Why You Probably Don&apos;t Need It&quot;
/&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;When Kubernetes Is the Wrong Tool&lt;/h2&gt;
&lt;p&gt;We&apos;ve all seen it:&lt;/p&gt;
&lt;p&gt;Teams reaching for Kubernetes when it&apos;s the wrong tool for the job. That&apos;s like lighting a birthday candle with a flamethrower.&lt;/p&gt;
&lt;p&gt;Here are a few real-world examples:&lt;/p&gt;
&lt;h3&gt;Example One: The Static Site&lt;/h3&gt;
&lt;p&gt;A simple marketing page — no backend, no database. Just HTML and maybe a bit of JavaScript. And yet… it&apos;s deployed in Kubernetes. With &lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/ingress/&quot;&gt;Ingress&lt;/a&gt;, &lt;a href=&quot;https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/&quot;&gt;autoscaling&lt;/a&gt;, &lt;a href=&quot;https://prometheus.io/&quot;&gt;Prometheus&lt;/a&gt; — the works. That&apos;s like renting a crane to hang a poster.&lt;/p&gt;
&lt;p&gt;You don&apos;t need Kubernetes. Just throw it on &lt;a href=&quot;https://www.netlify.com/&quot;&gt;Netlify&lt;/a&gt; or &lt;a href=&quot;https://aws.amazon.com/s3/&quot;&gt;S3&lt;/a&gt; — done. No cluster, no crying. They&apos;re fast, cheap, reliable — and require zero YAML therapy.&lt;/p&gt;
&lt;h3&gt;Example Two: The Monthly Monolith&lt;/h3&gt;
&lt;p&gt;One app. Updated once a month. No scaling, no rollout drama — it just runs. But somehow, there&apos;s a Helm chart, a cluster, and half a dozen manifests.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A basic &lt;a href=&quot;https://aws.amazon.com/ec2/&quot;&gt;VPC&lt;/a&gt; and &lt;a href=&quot;https://docs.docker.com/reference/cli/docker/container/run/&quot;&gt;docker run&lt;/a&gt; would&apos;ve done the job. Fewer moving parts. No cluster to babysit.&lt;/p&gt;
&lt;h3&gt;Example Three: The Small Team with a Big Cluster&lt;/h3&gt;
&lt;p&gt;Two or three devs. No dedicated platform engineer. No one watching metrics. But there&apos;s a cluster anyway.&lt;/p&gt;
&lt;p&gt;Pods crash, Argo&apos;s out of sync, PVCs break — and no one&apos;s watching. Nobody&apos;s sure if this is platform engineering or just chaos with better branding.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;When Kubernetes Does Make Sense&lt;/h2&gt;
&lt;p&gt;To be fair, &lt;strong&gt;Kubernetes has its place&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;When it fits, it&apos;s amazing. Let&apos;s look at a few scenarios where Kubernetes actually makes sense:&lt;/p&gt;
&lt;h3&gt;1. Complex Service Architectures&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;You&apos;re running multiple services — each with configs, secrets, health checks, and deploy flows.&lt;/li&gt;
&lt;li&gt;You need orchestration, service discovery, and scheduling.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kubernetes was built for this.&lt;/p&gt;
&lt;h3&gt;2. Dynamic Scaling and Resilience&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;You&apos;re dealing with traffic spikes.&lt;/li&gt;
&lt;li&gt;You want self-healing.&lt;/li&gt;
&lt;li&gt;You want the system to recover before you even notice something&apos;s wrong.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&apos;s Kubernetes at its best.&lt;/p&gt;
&lt;h3&gt;3. Platform Engineering&lt;/h3&gt;
&lt;p&gt;You&apos;re not just deploying apps — you&apos;re building an internal platform.&lt;/p&gt;
&lt;p&gt;With &lt;a href=&quot;https://opengitops.dev/&quot;&gt;GitOps&lt;/a&gt;, &lt;a href=&quot;https://argo-cd.readthedocs.io/en/stable/&quot;&gt;Argo&lt;/a&gt;, &lt;a href=&quot;https://helm.sh/&quot;&gt;Helm&lt;/a&gt;, &lt;a href=&quot;https://www.openpolicyagent.org/&quot;&gt;policy-as-code&lt;/a&gt; — and a team that actually understands it all.&lt;/p&gt;
&lt;p&gt;Here, Kubernetes gives you standardization, control, governance, and scale.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Real Catch: Kubernetes Doesn&apos;t Fix Your Problems&lt;/h2&gt;
&lt;p&gt;It &lt;strong&gt;distributes&lt;/strong&gt; them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you had no observability before, now your blind spots stretch across nodes.&lt;/li&gt;
&lt;li&gt;If your CI/CD pipeline was fragile, now it&apos;s fragile &lt;em&gt;and containerized&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;If no one could debug a crash before, now it&apos;s hidden behind layers of abstraction.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kubernetes is powerful. But it &lt;strong&gt;amplifies&lt;/strong&gt; whatever&apos;s already in your system — good or bad.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Ask Yourself — Honestly:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Do you have a DevOps or platform team to maintain the cluster?&lt;/li&gt;
&lt;li&gt;Are you running 5+ services that truly need orchestration?&lt;/li&gt;
&lt;li&gt;Do you require auto-scaling, self-healing, and complex rollout strategies?&lt;/li&gt;
&lt;li&gt;Are you confidently using tools like &lt;a href=&quot;https://helm.sh/&quot;&gt;Helm&lt;/a&gt;, &lt;a href=&quot;https://argo-cd.readthedocs.io/en/stable/&quot;&gt;Argo CD&lt;/a&gt;, &lt;a href=&quot;https://prometheus.io/&quot;&gt;Prometheus&lt;/a&gt; — and using them well?&lt;/li&gt;
&lt;li&gt;Can your team debug pod crashes, PVC issues, and weird networking glitches?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the answer to most of those is “not really,” then maybe Kubernetes isn&apos;t your next step.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;And that&apos;s totally okay.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;There&apos;s No Shame in Choosing Simpler Tools&lt;/h2&gt;
&lt;p&gt;Especially when they work better.&lt;/p&gt;
&lt;p&gt;We&apos;ve got great alternatives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.docker.com/compose/&quot;&gt;Docker Compose&lt;/a&gt; + &lt;a href=&quot;https://www.freedesktop.org/wiki/Software/systemd/&quot;&gt;systemd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/fargate/&quot;&gt;ECS Fargate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cloud.google.com/run&quot;&gt;Cloud Run&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://render.com/&quot;&gt;Render&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.heroku.com/&quot;&gt;Heroku&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A good old &lt;a href=&quot;https://aws.amazon.com/ec2/&quot;&gt;VPC&lt;/a&gt; instance and some solid &lt;a href=&quot;https://github.com/features/actions&quot;&gt;CI/CD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sometimes, the best tool isn&apos;t the most sophisticated — it&apos;s the one your team actually understands and can support long-term.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Let Me Be Real With You&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Kubernetes is not a badge of honor.&lt;/strong&gt; It&apos;s not a maturity checklist. It&apos;s just a complex, powerful tool, and it only makes sense when the problem truly calls for it.&lt;/p&gt;
&lt;p&gt;If it helps, great. If it doesn&apos;t? Skip the cluster. Skip the chaos. &lt;strong&gt;Move forward with something that fits.&lt;/strong&gt; Don&apos;t build a space shuttle when all you really need is… a bicycle.&lt;/p&gt;
&lt;p&gt;Thanks for reading! Be sure to watch the &lt;a href=&quot;https://youtu.be/BLMQx-MM4Io&quot;&gt;video version&lt;/a&gt; for extra insights and helpful visuals.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Kubernetes</category><category>Opinion</category><category>Orchestration</category><category>Best Practices</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>What Kind of Data Does AI Use</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Discover the main types of data AI uses — structured, unstructured, labeled, and unlabeled — explained in plain words with fun, relatable examples.</description><pubDate>Mon, 14 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, you brilliant tech babes (and kings — I see you too 👀)!&lt;/p&gt;
&lt;p&gt;You already know &lt;em&gt;how&lt;/em&gt; AI learns and &lt;em&gt;where&lt;/em&gt; it shows up in real life.
But there&apos;s one more thing you absolutely need to know to truly get AI:&lt;/p&gt;
&lt;p&gt;It&apos;s all about the data, darling.&lt;br /&gt;
Like, &lt;strong&gt;literally&lt;/strong&gt;. No data = no AI.&lt;/p&gt;
&lt;p&gt;Let&apos;s break it down, step by step — from the types of data to why they matter, and what can go wrong if your data&apos;s a mess (spoiler: &lt;em&gt;everything&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;So grab your iced latte and let&apos;s talk dirty — &lt;em&gt;data dirty&lt;/em&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Structured vs. Unstructured — What&apos;s the Tea?&lt;/h2&gt;
&lt;h3&gt;Structured Data = Neat girl energy&lt;/h3&gt;
&lt;p&gt;Think spreadsheets, columns, drop-down menus. Basically, info that fits in tidy rows and is super easy to organize.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Real-life example:&lt;/strong&gt;&lt;br /&gt;
Your online store tracks shoppers by name, age, and how much they spent last month.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Name: Emma&lt;/li&gt;
&lt;li&gt;Age: 28&lt;/li&gt;
&lt;li&gt;Purchase: $89.99&lt;/li&gt;
&lt;li&gt;VIP status: Yes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Perfect for AI to eat up and analyze.&lt;br /&gt;
This kind of data is the go-to for supervised learning. It&apos;s simple, predictable, and super model-friendly.&lt;/p&gt;
&lt;h3&gt;Unstructured Data = Total chaos... but gold&lt;/h3&gt;
&lt;p&gt;This is all the messy stuff AI needs to decode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tweets&lt;/li&gt;
&lt;li&gt;DMs&lt;/li&gt;
&lt;li&gt;Selfies&lt;/li&gt;
&lt;li&gt;Voice notes&lt;/li&gt;
&lt;li&gt;TikToks&lt;/li&gt;
&lt;li&gt;Review texts&lt;/li&gt;
&lt;li&gt;Screenshots of what your friend sent you at 2am&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This data is harder to process — but it&apos;s also &lt;strong&gt;where the juicy, human stuff lives&lt;/strong&gt;.&lt;br /&gt;
With the right tools (like NLP or computer vision), AI can &lt;em&gt;feel&lt;/em&gt; what people are saying, seeing, and reacting to.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Data Types AI Actually Works With&lt;/h2&gt;
&lt;p&gt;Here&apos;s what shows up in real-world projects — broken down like a cute cheat sheet:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data Type&lt;/th&gt;
&lt;th&gt;Looks Like…&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;What AI Does With It&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Numerical&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Numbers, prices, scores&lt;/td&gt;
&lt;td&gt;5, 29.99, 90%&lt;/td&gt;
&lt;td&gt;Normalize, scale, compare&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Categorical&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Labels, options, categories&lt;/td&gt;
&lt;td&gt;&quot;Beginner&quot;, &quot;NY&quot;, &quot;Tote bag&quot;&lt;/td&gt;
&lt;td&gt;Convert to machine-friendly codes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Text&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Reviews, messages, bios&lt;/td&gt;
&lt;td&gt;“Ugh, I loved it so much!”&lt;/td&gt;
&lt;td&gt;Understand mood, topic, emotion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Image&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Selfies, product pics, screenshots&lt;/td&gt;
&lt;td&gt;Photo of a red dress&lt;/td&gt;
&lt;td&gt;Detect shapes, colors, objects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Audio&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Voice memos, customer calls&lt;/td&gt;
&lt;td&gt;Voice note: “Sooo... mad or just tired?”&lt;/td&gt;
&lt;td&gt;Turn into text or audio features&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Video&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Insta Reels, tutorials, dashcams&lt;/td&gt;
&lt;td&gt;Makeup GRWM TikTok&lt;/td&gt;
&lt;td&gt;Analyze image + sound together&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;⚙️ What Makes Data “Model-Ready”?&lt;/h2&gt;
&lt;p&gt;You don&apos;t just throw your raw data into an AI model and hope for the best — that&apos;s like showing up to a glam shoot with bed hair and mismatched socks.&lt;/p&gt;
&lt;p&gt;Your data needs a serious prep routine:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Cleaning&lt;/strong&gt; — remove duplicates, typos, missing stuff&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formatting&lt;/strong&gt; — make sure prices are numbers, dates are dates, and text is readable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Labeling&lt;/strong&gt; — if your model needs answers, you have to tell it what&apos;s what (e.g. “This is a cat. That&apos;s a croissant.”)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Balancing&lt;/strong&gt; — avoid over-representing one side (like 90% apples and 10% oranges — we&apos;re not doing fruit bias today)&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;Why Bad Data = Bad AI&lt;/h2&gt;
&lt;p&gt;Let&apos;s be real: even the smartest AI won&apos;t save your butt if your data&apos;s a mess.&lt;br /&gt;
Here&apos;s what happens if you skip the prep:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your model makes wrong predictions&lt;/li&gt;
&lt;li&gt;It becomes biased (like recommending only men&apos;s products if it&apos;s seen mostly male data)&lt;/li&gt;
&lt;li&gt;It just... breaks. And blames you silently.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Imagine you want your AI to recognize whether a voice note is angry or chill.&lt;br /&gt;
But most of your training data is people being excited.&lt;br /&gt;
Now when someone calmly says “I&apos;m fine,” the model might think they&apos;re thrilled — or worse, lying.&lt;/p&gt;
&lt;p&gt;That&apos;s not AI&apos;s fault. That&apos;s ✨data drama✨.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;So... What Should You Know as a Beginner?&lt;/h2&gt;
&lt;p&gt;Even if you&apos;re not building models (yet), just knowing this gives you a major edge:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Data is the &lt;em&gt;fuel&lt;/em&gt; AI runs on&lt;/li&gt;
&lt;li&gt;Clean, balanced data = accurate, smart AI&lt;/li&gt;
&lt;li&gt;Unstructured data is harder, but so much more real and emotional&lt;/li&gt;
&lt;li&gt;You can totally start working with it — one TikTok caption or product review at a time&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Final Thoughts from a Data-Loving IT Girl&lt;/h2&gt;
&lt;p&gt;People think AI is all about code and algorithms. But girl, no.&lt;br /&gt;
&lt;strong&gt;AI is 80% data, 20% logic — and 100% what you feed it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So if you&apos;re learning AI, working in tech, or just curious about how Netflix knows you want to watch K-dramas at 2am... it all comes down to the data.&lt;/p&gt;
&lt;p&gt;Clean it. Understand it. Respect it.&lt;/p&gt;
&lt;p&gt;Because even your future AI model needs a solid skincare routine before it glows.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>AI &amp; MLOps</category><category>AI</category><category>Data</category><category>ML</category><category>Learning</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>DevSecOps Explained - Security for DevOps in 2025</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>A no-fluff DevSecOps guide for DevOps engineers. Learn how to build secure pipelines, protect secrets, and integrate security from day one.</description><pubDate>Fri, 11 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Today we&apos;re diving into something that sounds a bit technical at first, but is actually super practical: &lt;strong&gt;DevSecOps&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If you&apos;re in DevOps — or planning to get into it — security is not something you can afford to ignore anymore. And don&apos;t worry, this isn&apos;t going to be full of code or complex theory.&lt;/p&gt;
&lt;p&gt;It&apos;s a straightforward explanation to help you think like a secure DevOps engineer in 2025. &lt;strong&gt;Let&apos;s get into it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;import VideoPlayer from &quot;@components/VideoPlayer.astro&quot;;&lt;/p&gt;
&lt;p&gt;&amp;lt;VideoPlayer
videoId=&quot;xLah-QzUH50&quot;
title=&quot;DevSecOps Explained - Security for DevOps in 2025&quot;
/&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What exactly is DevSecOps?&lt;/h2&gt;
&lt;p&gt;Well, DevSecOps simply means: &lt;strong&gt;security isn&apos;t something that comes in at the end — it&apos;s something that&apos;s part of the process from day one.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the past, developers would write code, DevOps would deploy it, and only then would the security team show up and say, “Wait a second — is this safe?”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DevSecOps flips that around.&lt;/strong&gt; It means we&apos;re thinking about security from the beginning. It&apos;s like &lt;strong&gt;buckling your seatbelt before the car starts moving&lt;/strong&gt; — not after an accident happens.&lt;/p&gt;
&lt;p&gt;And no, it doesn&apos;t mean you need to become a cybersecurity expert. But if you&apos;re touching infrastructure, automation, or CI/CD — then yes, &lt;strong&gt;security is part of your job.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Why is this especially important right now?&lt;/h2&gt;
&lt;p&gt;Because &lt;strong&gt;things are fast&lt;/strong&gt;. Everything is automated. You&apos;re deploying through pipelines, spinning up cloud infrastructure in seconds, managing services across environments.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;And attackers are adapting to that.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;They&apos;re not just targeting websites anymore — they&apos;re going after your &lt;strong&gt;pipelines, your cloud configs, your secrets, your state files.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;All it takes is &lt;strong&gt;one exposed API key&lt;/strong&gt;, one public S3 bucket, or one bad permission — and your whole system is at risk.&lt;/p&gt;
&lt;p&gt;Plus, with growing &lt;strong&gt;compliance demands&lt;/strong&gt;, &lt;strong&gt;customer expectations&lt;/strong&gt;, and the &lt;strong&gt;pressure to move quickly&lt;/strong&gt; — we simply can&apos;t treat security like an afterthought anymore.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;How do you actually start thinking like a DevSecOps engineer?&lt;/h2&gt;
&lt;p&gt;Let me walk you through a few simple — but powerful — things you can start doing right now.&lt;/p&gt;
&lt;p&gt;No need to boil the ocean. Just start here:&lt;/p&gt;
&lt;h3&gt;1. Don&apos;t hardcode secrets.&lt;/h3&gt;
&lt;p&gt;I know it&apos;s tempting, but passwords, tokens, keys — &lt;strong&gt;they don&apos;t belong in your code. Ever.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Store them safely.&lt;/strong&gt; Use something like &lt;a href=&quot;https://www.hashicorp.com/en/products/vault&quot;&gt;Vault&lt;/a&gt;, &lt;a href=&quot;https://aws.amazon.com/secrets-manager/&quot;&gt;AWS Secrets Manager&lt;/a&gt;, or even your &lt;a href=&quot;https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions&quot;&gt;CI/CD platform&apos;s built-in secrets&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Think about it like this — would you tape your house key to your front door? No? Then don&apos;t leave credentials in your Git repo either.&lt;/p&gt;
&lt;h3&gt;2. Treat your infrastructure as code like it&apos;s real code — because it is.&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Terraform files, Kubernetes configs, Ansible playbooks&lt;/strong&gt; — they can all introduce risks.&lt;/p&gt;
&lt;p&gt;Use tools like &lt;a href=&quot;https://github.com/aquasecurity/tfsec&quot;&gt;tfsec&lt;/a&gt;, &lt;a href=&quot;https://www.checkov.io/&quot;&gt;Checkov&lt;/a&gt;, or &lt;a href=&quot;https://snyk.io/&quot;&gt;Snyk&lt;/a&gt; to scan for misconfigurations. They&apos;ll catch things you might miss.&lt;/p&gt;
&lt;h3&gt;3. Lock down your pipelines.&lt;/h3&gt;
&lt;p&gt;Your &lt;strong&gt;CI/CD has a ton of power&lt;/strong&gt;. It can deploy apps, spin up servers, change production.&lt;/p&gt;
&lt;p&gt;That&apos;s not something just anyone should have access to.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Keep it controlled.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use approvals.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don&apos;t give out admin access freely.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. Be intentional with permissions.&lt;/h3&gt;
&lt;p&gt;Use the &lt;strong&gt;principle of least privilege&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Give people — and systems — only the access they actually need. Nothing more.&lt;/p&gt;
&lt;h3&gt;5. Don&apos;t forget observability.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Turn on logging.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitor who&apos;s doing what.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Set up alerts for strange behavior.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can&apos;t respond to what you can&apos;t see.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Now let me be honest...&lt;/h2&gt;
&lt;p&gt;Some of the &lt;strong&gt;biggest security issues I&apos;ve seen didn&apos;t come from complex hacks&lt;/strong&gt;.&lt;br /&gt;
They came from &lt;strong&gt;simple, overlooked mistakes&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Leaving an S3 bucket open “just for testing” and forgetting to close it&lt;/li&gt;
&lt;li&gt;Accidentally pushing secrets to a public Git repo&lt;/li&gt;
&lt;li&gt;Letting the whole team share a single admin account&lt;/li&gt;
&lt;li&gt;Storing sensitive Terraform state files locally, unencrypted&lt;/li&gt;
&lt;li&gt;Skipping proper environments and pushing straight to production because staging was down&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each of these might seem small in the moment — but &lt;strong&gt;they can open the door to serious problems later.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;If you&apos;re new to all this — where do you begin without feeling overwhelmed?&lt;/h2&gt;
&lt;p&gt;Here&apos;s a simple place to start:&lt;/p&gt;
&lt;p&gt;✅ Move your secrets out of your codebase&lt;br /&gt;
✅ Store your Terraform state in a secure, remote backend with locking&lt;br /&gt;
✅ Add &lt;strong&gt;one&lt;/strong&gt; security scanner to your workflow — just one is already progress&lt;br /&gt;
✅ Review infrastructure changes like you review application code&lt;br /&gt;
✅ Enable basic logging and alerting&lt;br /&gt;
✅ And start asking the question: “What could go wrong if this fails or leaks?”&lt;/p&gt;
&lt;p&gt;That mindset shift is huge.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Security isn&apos;t about being paranoid — it&apos;s about being prepared.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;To wrap this up:&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;DevSecOps isn&apos;t just a new tool or framework. It&apos;s a way of working.&lt;/strong&gt; You&apos;re not just building systems that work — you&apos;re building systems that are &lt;strong&gt;resilient&lt;/strong&gt;, &lt;strong&gt;secure&lt;/strong&gt;, and &lt;strong&gt;ready to scale&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Thanks for reading! Be sure to watch the &lt;a href=&quot;https://youtu.be/xLah-QzUH50&quot;&gt;video version&lt;/a&gt; for extra insights and helpful visuals.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>DevSecOps</category><category>Security</category><category>DevOps</category><category>Best Practices</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>How AI Learns — and Where It&apos;s Actually Used</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>How AI learns (supervised, unsupervised, reinforcement) — explained simply, with real-life examples you&apos;ll actually relate to.</description><pubDate>Mon, 07 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, tech queens! And kings — don&apos;t act shy, I know you&apos;re here. 😉✨&lt;/p&gt;
&lt;p&gt;If you&apos;ve ever wondered how AI models “learn,” but everything you found online felt like it was written by a robot for robots — don&apos;t worry, I got you. Today, I&apos;m breaking it down in the easiest, most human way possible.&lt;/p&gt;
&lt;p&gt;We&apos;re talking &lt;strong&gt;how AI learns&lt;/strong&gt; — and spoiler: it&apos;s not magic, just logic + data + the right type of training. There are three main ways machines learn, and honestly? They&apos;re kinda relatable.&lt;/p&gt;
&lt;p&gt;So grab a matcha (or espresso, I don&apos;t judge) — let&apos;s go! ☕👩‍💻&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;1. Supervised Learning — Like AI School With a Teacher&lt;/h2&gt;
&lt;p&gt;This is the &lt;em&gt;classic classroom&lt;/em&gt; situation.&lt;/p&gt;
&lt;p&gt;Imagine you&apos;re showing someone photos of fruit and saying:&lt;/p&gt;
&lt;p&gt;“This one&apos;s an apple. This one&apos;s an orange. Got it?”&lt;br /&gt;
Over time, they start recognizing apples and oranges on their own.&lt;/p&gt;
&lt;p&gt;That&apos;s exactly how &lt;strong&gt;supervised learning&lt;/strong&gt; works.&lt;br /&gt;
You give the AI a bunch of examples — &lt;em&gt;with correct labels&lt;/em&gt; — and it learns the patterns.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;💡 Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You&apos;re building an app to recognize different types of bags (because, yes, I need AI to help me sort my closet).&lt;br /&gt;
You feed it photos labeled: tote, backpack, clutch.&lt;br /&gt;
Eventually, the model sees a new photo and goes, “Oh, that&apos;s a clutch.” Boom.&lt;/p&gt;
&lt;p&gt;🧠 &lt;strong&gt;It learns from:&lt;/strong&gt; examples with answers&lt;br /&gt;
📦 &lt;strong&gt;Use cases:&lt;/strong&gt; spam filters, price predictions, mood detection in texts&lt;br /&gt;
💅 &lt;strong&gt;Vibe:&lt;/strong&gt; “Tell me what&apos;s what, and I&apos;ll learn it.”&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;2. Unsupervised Learning — The “I&apos;ll Figure It Out Myself” Energy&lt;/h2&gt;
&lt;p&gt;This one&apos;s more like throwing someone into a room full of fruit and saying:&lt;/p&gt;
&lt;p&gt;“Here&apos;s a bunch of stuff. Sort it however makes sense.”&lt;br /&gt;
No labels. No clues. Just vibes. 😌&lt;/p&gt;
&lt;p&gt;And somehow… they do it.&lt;/p&gt;
&lt;p&gt;They group things by color, shape, size — whatever patterns they notice. AI does the same.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;💡 Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ve got hundreds of customers and zero info on who&apos;s who.&lt;br /&gt;
Your AI analyzes behavior — how often they buy, what they buy, when they shop — and groups them into categories. Now you know who&apos;s your VIP and who&apos;s just here for the flash sales.&lt;/p&gt;
&lt;p&gt;🧠 &lt;strong&gt;It learns from:&lt;/strong&gt; raw, unlabeled data&lt;br /&gt;
📦 &lt;strong&gt;Use cases:&lt;/strong&gt; customer segmentation, finding weird behavior (hello, fraud), organizing messy info&lt;br /&gt;
💅 &lt;strong&gt;Vibe:&lt;/strong&gt; “I&apos;m independent and intuitive, thanks.”&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;3. Reinforcement Learning — Learn by Doing (and Failing) 🎮&lt;/h2&gt;
&lt;p&gt;Okay, so now imagine you&apos;re training your cat to stay off your laptop (been there).&lt;/p&gt;
&lt;p&gt;If she stays on the floor — treat.&lt;/p&gt;
&lt;p&gt;If she walks across your keyboard mid-Zoom call — no treat.&lt;/p&gt;
&lt;p&gt;She figures it out eventually.&lt;/p&gt;
&lt;p&gt;That&apos;s how &lt;strong&gt;reinforcement learning&lt;/strong&gt; works: the AI &lt;em&gt;tries&lt;/em&gt;, gets feedback, adjusts, and improves.&lt;/p&gt;
&lt;p&gt;It&apos;s learning through experience — kind of like how we learn to not trust hotel Wi-Fi again.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;💡 Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Your robot vacuum bumps into your desk chair.&lt;br /&gt;
Ouch.&lt;br /&gt;
It backs up and tries another route. Over time, it learns the best paths for &lt;em&gt;your&lt;/em&gt; space, and it becomes your little clean freak buddy.&lt;/p&gt;
&lt;p&gt;🧠 &lt;strong&gt;It learns from:&lt;/strong&gt; trial + error + rewards&lt;br /&gt;
📦 &lt;strong&gt;Use cases:&lt;/strong&gt; robots, game AI, delivery route optimization&lt;br /&gt;
💅 &lt;strong&gt;Vibe:&lt;/strong&gt; “Let me try, fail fabulously, and come back stronger.”&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Quick Recap — Because We Love a Cute Table&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type of Learning&lt;/th&gt;
&lt;th&gt;Learns From&lt;/th&gt;
&lt;th&gt;Main Goal&lt;/th&gt;
&lt;th&gt;Vibe&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Supervised&lt;/td&gt;
&lt;td&gt;Examples + right answers&lt;/td&gt;
&lt;td&gt;Make accurate predictions&lt;/td&gt;
&lt;td&gt;“Teach me &amp;amp; I&apos;ll deliver.”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unsupervised&lt;/td&gt;
&lt;td&gt;Just data&lt;/td&gt;
&lt;td&gt;Find patterns or clusters&lt;/td&gt;
&lt;td&gt;“Let me figure it out.”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reinforcement&lt;/td&gt;
&lt;td&gt;Actions + feedback&lt;/td&gt;
&lt;td&gt;Learn best strategy&lt;/td&gt;
&lt;td&gt;“Trial, error, glow-up.”&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;Final Thoughts From Your Favorite Tech Girl&lt;/h2&gt;
&lt;p&gt;AI doesn&apos;t have to be confusing. Once you understand the way it learns — girl, it clicks.&lt;/p&gt;
&lt;p&gt;Honestly? It&apos;s not that different from how &lt;em&gt;we&lt;/em&gt; learn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Supervised:&lt;/strong&gt; like school.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unsupervised:&lt;/strong&gt; like figuring out a new city without a map.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reinforcement:&lt;/strong&gt; like finally learning not to text your ex — the hard way.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So next time you hear someone mention machine learning, you&apos;ll be like:
“Oh, supervised? Cute. Classic.” 😌&lt;/p&gt;
&lt;p&gt;And now that you&apos;ve got the learning part down… let&apos;s see where AI is slaying in real life.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Where is AI actually used?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;And I don&apos;t mean some future-sci-fi-robot-world. I mean right here, right now — in things you already use, buy, click on, and even wear.&lt;/p&gt;
&lt;p&gt;Let&apos;s take this out of the textbook and into the real world, shall we?&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;1. Healthcare — Dr. AI Is In&lt;/h2&gt;
&lt;p&gt;AI doesn&apos;t replace doctors, but it &lt;em&gt;does&lt;/em&gt; help them. Think of it like a super-focused assistant who never blinks.&lt;/p&gt;
&lt;p&gt;It can analyze medical images, compare test results across thousands of cases, and spot signs of issues faster than the human eye.&lt;/p&gt;
&lt;p&gt;No, it&apos;s not diagnosing your cold — but it might help flag early signs of something serious before you even feel it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Girl-coded example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You get a chest scan. The AI says, “Hey, this tiny area right here? That&apos;s worth a closer look.”&lt;br /&gt;
The doctor reviews it, confirms it, and you just got a life-saving second opinion. Yas.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;2. Retail — AI Is Your (Low-Key) Shopping BFF&lt;/h2&gt;
&lt;p&gt;Ever wonder how your fave online store &lt;em&gt;knows&lt;/em&gt; you&apos;re obsessed with oversized hoodies and anything beige?&lt;/p&gt;
&lt;p&gt;Yeah, that&apos;s AI.&lt;/p&gt;
&lt;p&gt;It tracks what you click, what you buy, what you almost buy, and builds a vibe profile. Then it recommends stuff you&apos;re &lt;em&gt;actually&lt;/em&gt; into — not just random glitter crop tops (unless that&apos;s your thing).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bonus:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI helps brands manage stock too. So if data shows it&apos;s iced coffee season and everyone&apos;s about to panic-buy reusable cups — AI tells them to order extra before shelves go empty.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;3. Manufacturing — AI as Quality Control Queen&lt;/h2&gt;
&lt;p&gt;Forget waiting for something to break. AI now predicts when machines &lt;em&gt;will&lt;/em&gt; break — before they do. It catches tiny signs of wear, monitors equipment in real time, and keeps things smooth and efficient.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In other words:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Instead of “Oops, the machine died,” it&apos;s “Heads up, this part might fail in 3 days — wanna fix it now?”&lt;br /&gt;
We love a proactive moment.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;4. Transportation — Not Just Self-Driving Cars&lt;/h2&gt;
&lt;p&gt;Self-driving cars get the spotlight, but AI is &lt;em&gt;everywhere&lt;/em&gt; in transportation now.&lt;/p&gt;
&lt;p&gt;From traffic light systems that reduce wait times, to delivery apps that find the fastest route &lt;em&gt;even when&lt;/em&gt; your street&apos;s under construction (again), AI&apos;s behind the wheel.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Also:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI can help plan bus routes, prevent train delays, and basically stop your “I&apos;ll be there in 10” from turning into 30.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;5. Farming — Yes, Farming Got Smart Too&lt;/h2&gt;
&lt;p&gt;Think AI is only for techy city things? Nope.&lt;/p&gt;
&lt;p&gt;Farmers are using AI to figure out the best time to plant crops, how much water each field needs, and when to harvest for the best yield.&lt;/p&gt;
&lt;p&gt;With drones, sensors, and data analysis, AI can literally say:&lt;br /&gt;
“Hey, that row of strawberries looks a little off — might be a pest problem.”&lt;/p&gt;
&lt;p&gt;It&apos;s like your skincare routine, but for plants.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;6. Warehousing &amp;amp; Logistics — Organized Girl Energy&lt;/h2&gt;
&lt;p&gt;Ever wonder how your next-day delivery &lt;em&gt;actually&lt;/em&gt; happens? AI.&lt;/p&gt;
&lt;p&gt;It helps warehouses know where every item is, routes packages in real time, and adjusts on the fly if anything goes wrong.&lt;/p&gt;
&lt;p&gt;(And yes, it probably helped choose your delivery slot too.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fun fact:&lt;/strong&gt;&lt;br /&gt;
Some warehouses are almost entirely AI-driven. Like, your leggings got packed by a robot. Wild.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;7. Customer Service — Not Your Basic Chatbot&lt;/h2&gt;
&lt;p&gt;Gone are the days of boring bots that reply with “I didn&apos;t get that.”&lt;/p&gt;
&lt;p&gt;Today&apos;s AI-powered assistants can actually understand your messy, typo-filled question and offer legit solutions. At 3am. Without attitude.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Real example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You message a beauty brand: “Hey my order is late and I think I put the wrong zip code??”&lt;br /&gt;
The AI checks your order, fixes your address, and updates delivery — without making you wait 47 minutes on hold. Iconic.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;So… Should You Use AI?&lt;/h2&gt;
&lt;p&gt;Let&apos;s break it down:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ask yourself…&lt;/th&gt;
&lt;th&gt;If yes, AI might help&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Do you have data?&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Do patterns repeat in that data?&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Would you love to automate tasks?&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If you nodded three times, guess what?&lt;br /&gt;
&lt;strong&gt;AI is not too much for you. You&apos;re ready.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Final Final Thoughts — Now You &lt;em&gt;Really&lt;/em&gt; Get It&lt;/h2&gt;
&lt;p&gt;You don&apos;t need to code a neural network from scratch to understand AI. You just need to know:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;How it learns&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Where it works&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What it needs to succeed&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And now? You do.&lt;/p&gt;
&lt;p&gt;From fashion to farming, playlists to packages — AI is behind so many things we use every day.&lt;/p&gt;
&lt;p&gt;It&apos;s not science fiction. It&apos;s the quiet genius in the background. And you, babe, are officially in the know.&lt;/p&gt;
&lt;p&gt;Let&apos;s keep learning, building, and leading the smart-girl revolution.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>AI &amp; MLOps</category><category>AI</category><category>ML</category><category>Learning</category><category>Technology</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>10 Terraform Interview Questions You Must Know in 2025</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Master 10 key Terraform interview questions for 2025 DevOps and Cloud Engineer roles with tips, examples, and expert insights.</description><pubDate>Tue, 01 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you&apos;re preparing for a &lt;strong&gt;Cloud Engineer&lt;/strong&gt; or &lt;strong&gt;DevOps Engineer&lt;/strong&gt; interview in &lt;strong&gt;2025&lt;/strong&gt;, you &lt;strong&gt;must&lt;/strong&gt; know Terraform—it&apos;s one of the most in-demand tools for managing cloud infrastructure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Today, we&apos;re covering 10 must-know Terraform interview questions&lt;/strong&gt; to help you &lt;strong&gt;land your next DevOps job!&lt;/strong&gt; Stay tuned for expert tips and real-world examples. Let&apos;s jump in!&lt;/p&gt;
&lt;p&gt;import VideoPlayer from &quot;@components/VideoPlayer.astro&quot;;&lt;/p&gt;
&lt;p&gt;&amp;lt;VideoPlayer
videoId=&quot;MPj4sTnDPls&quot;
title=&quot;10 Terraform Interview Questions You Must Know in 2025&quot;
/&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 1: What is Terraform and why should you care?&lt;/h2&gt;
&lt;p&gt;So, Terraform is a free tool made by HashiCorp. It lets you manage your cloud infrastructure — like servers, databases, networks — using code instead of clicking around in a user interface like the AWS console.&lt;/p&gt;
&lt;p&gt;Basically, you write some config files, and Terraform builds all your resources for you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why it&apos;s useful:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, you don&apos;t have to do things manually anymore.&lt;/li&gt;
&lt;li&gt;Second, your environments — dev, test, prod — stay consistent.&lt;/li&gt;
&lt;li&gt;And finally, it works with multiple cloud providers like AWS, Azure, and Google Cloud Platform.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Need 5 EC2 instances in AWS? Instead of setting them up one by one, you write a script in Terraform — and it will set everything up for you in one go.&lt;/p&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt; If someone asks how Terraform is different from tools like Ansible or CloudFormation, here&apos;s a simple way to explain it: &lt;strong&gt;Terraform describes the end goal&lt;/strong&gt; — what you want things to look like — while &lt;strong&gt;Ansible&lt;/strong&gt; is more about the step-by-step process to get there.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 2: What are the main parts of Terraform?&lt;/h2&gt;
&lt;p&gt;Let&apos;s break it down. There are three main pieces you should know:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, &lt;strong&gt;Providers&lt;/strong&gt; — they connect Terraform to cloud platforms like AWS, Azure, GCP, and so on.&lt;/li&gt;
&lt;li&gt;Then we have &lt;strong&gt;Modules&lt;/strong&gt; — these are chunks of reusable code that help you avoid repeating yourself.&lt;/li&gt;
&lt;li&gt;And lastly, there&apos;s &lt;strong&gt;State&lt;/strong&gt; — this is a file that keeps track of what Terraform has already created.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; If you&apos;re creating a server on AWS, the provider tells Terraform, &quot;Hey, we&apos;re using AWS,&quot; and then you can use a module to automatically handle networking, storage, and so on.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 3: What is Terraform State and why is it important?&lt;/h2&gt;
&lt;p&gt;Terraform State is just a file that remembers everything Terraform has built.&lt;/p&gt;
&lt;p&gt;Here&apos;s why it matters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, it helps by keeping track of what already exists in your infrastructure.&lt;/li&gt;
&lt;li&gt;Second, it figures out the relationships — or dependencies — between different resources.&lt;/li&gt;
&lt;li&gt;And third, it allows your whole team to collaborate effectively — particularly when the state file is stored remotely, which is key for team-based setups.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But here&apos;s something a lot of people get wrong: saving state &lt;strong&gt;on your laptop&lt;/strong&gt;. If something happens to your computer, you could lose all your Terraform tracking.&lt;/p&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt; Store state in &lt;strong&gt;S3&lt;/strong&gt; and use &lt;strong&gt;DynamoDB&lt;/strong&gt; for locking, or just go with &lt;a href=&quot;https://app.terraform.io&quot;&gt;Terraform Cloud&lt;/a&gt; to make life easier. And if someone mentions “state locking,” it&apos;s basically just a way to stop multiple people from making changes at the same time.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 4: What&apos;s the difference between Terraform Plan and Apply?&lt;/h2&gt;
&lt;p&gt;It&apos;s simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;terraform plan&lt;/code&gt; shows you what changes Terraform is going to make.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;terraform apply&lt;/code&gt; actually makes those changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Let&apos;s say you change an EC2 instance type from &lt;code&gt;t2.micro&lt;/code&gt; to &lt;code&gt;t3.micro&lt;/code&gt;. &lt;code&gt;terraform plan&lt;/code&gt; will say, “Hey, this is the difference,” and &lt;code&gt;terraform apply&lt;/code&gt; will go ahead and make it happen.&lt;/p&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt; Before you apply any changes, it&apos;s a good idea to run &lt;code&gt;terraform plan&lt;/code&gt; and save the output to a file. This way, you can double-check what&apos;s about to happen and avoid surprises.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 5: How does Terraform handle dependencies?&lt;/h2&gt;
&lt;p&gt;Terraform usually understands dependencies on its own, just by looking at how your resources are connected.&lt;/p&gt;
&lt;p&gt;But if you really need to, you can use &lt;code&gt;depends_on&lt;/code&gt; to say, “Hey, make sure this thing is done first.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; You&apos;re creating an EC2 instance that needs a VPC. Terraform will automatically know to create the VPC first.&lt;/p&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt; Try not to rely too much on &lt;code&gt;depends_on&lt;/code&gt;. Terraform is smart and can usually handle this without extra help.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 6: What is Terraform Drift and how do you find it?&lt;/h2&gt;
&lt;p&gt;Drift is when something in your cloud setup changes outside of Terraform — like if someone makes a manual change in the AWS Console — and now your code doesn&apos;t line up with what&apos;s actually running.&lt;/p&gt;
&lt;p&gt;To spot that kind of difference, you can run &lt;code&gt;terraform plan&lt;/code&gt;. It&apos;ll show you if anything has changed that Terraform didn&apos;t expect.&lt;/p&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt; If you want to keep everything organized and up to date, you can set up automatic drift checks in &lt;a href=&quot;https://app.terraform.io&quot;&gt;Terraform Cloud&lt;/a&gt;, or add a simple step to your automation setup to check for changes from time to time.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 7: How do you handle sensitive data in Terraform?&lt;/h2&gt;
&lt;p&gt;Here&apos;s how to deal with secrets safely:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, use variables and set &lt;code&gt;sensitive = true&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then, store secrets in something secure like &lt;strong&gt;AWS Secrets Manager&lt;/strong&gt; or &lt;strong&gt;Vault&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;And finally, make sure your remote state is encrypted.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🚨 And seriously — never put passwords directly in your code or state files.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 8: What are Terraform Workspaces?&lt;/h2&gt;
&lt;p&gt;Workspaces let you use the &lt;strong&gt;same Terraform config&lt;/strong&gt; for different environments — like dev, staging, and prod.&lt;/p&gt;
&lt;p&gt;🔹 You can run commands like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;terraform workspace new dev&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;terraform workspace select dev&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt; Workspaces are fine for small projects, but for bigger systems, using &lt;strong&gt;separate state files&lt;/strong&gt; is usually better.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 9: What are Terraform Modules and why use them?&lt;/h2&gt;
&lt;p&gt;Modules are just reusable bits of code that make your Terraform setup easier to manage.&lt;/p&gt;
&lt;p&gt;Here&apos;s why they&apos;re helpful:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First of all, they help you avoid repeating the same code in every project.&lt;/li&gt;
&lt;li&gt;They also keep your files nice and organized.&lt;/li&gt;
&lt;li&gt;And finally, they help make sure your infrastructure stays consistent everywhere.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;📌 &lt;strong&gt;Example:&lt;/strong&gt; You can create a module for a VPC and use it in multiple places instead of writing that code over and over.&lt;/p&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt; Before writing your own module, check out the &lt;strong&gt;Terraform Registry&lt;/strong&gt;. Someone else may have already built what you need.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Question 10: How do you use Terraform in an automated deployment process?&lt;/h2&gt;
&lt;p&gt;You can plug Terraform into your CI/CD setup using tools like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitLab CI&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terraform Cloud&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🛠 Here&apos;s a basic workflow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;First, run &lt;code&gt;terraform fmt&lt;/code&gt; and &lt;code&gt;terraform validate&lt;/code&gt; to check formatting and syntax.&lt;/li&gt;
&lt;li&gt;Then, use &lt;code&gt;terraform plan&lt;/code&gt; to preview the changes.&lt;/li&gt;
&lt;li&gt;And finally, use &lt;code&gt;terraform apply&lt;/code&gt; only after someone gives the green light (especially in production).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;🚀 &lt;strong&gt;Pro Tip:&lt;/strong&gt; Some teams also use &lt;strong&gt;Open Policy Agent&lt;/strong&gt; to apply security rules before changes are applied.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;🔥 Alright, that&apos;s it for today! These &lt;strong&gt;10 Terraform questions&lt;/strong&gt; should give you a solid foundation for your next DevOps interview.&lt;/p&gt;
&lt;p&gt;Thanks for reading! Be sure to watch the &lt;a href=&quot;https://youtu.be/MPj4sTnDPls&quot;&gt;video version&lt;/a&gt; for extra insights and helpful visuals.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Terraform</category><category>IaC</category><category>Interview Questions</category><category>DevOps</category><category>GitOps</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>AI for Beginners - How It Works, Learns, and Makes Decisions</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Simple guide to AI and machine learning for beginners. Learn how it works with clear explanations and easy-to-understand examples.</description><pubDate>Mon, 31 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, lovely tech queens! 👩‍💻✨&lt;/p&gt;
&lt;p&gt;Let&apos;s be real: tech terms like &lt;strong&gt;AI&lt;/strong&gt;, &lt;strong&gt;machine learning&lt;/strong&gt;, and &lt;strong&gt;deep learning&lt;/strong&gt; get thrown around constantly — and unless you&apos;ve spent your nights reading research papers (I haven&apos;t either), they can sound like a black box.&lt;/p&gt;
&lt;p&gt;But they&apos;re not.&lt;br /&gt;
Let me break them down for you — clearly, simply, and with real-life examples (yes, including oranges and smart thermostats).&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Part 1: What is AI — and why does everyone talk about it?&lt;/h2&gt;
&lt;p&gt;AI stands for &lt;strong&gt;Artificial Intelligence&lt;/strong&gt;, and no, it&apos;s not about robots with feelings. It&apos;s about teaching machines to do things that usually require human intelligence:&lt;br /&gt;
like understanding language, recognizing images, predicting outcomes, or making decisions.&lt;/p&gt;
&lt;p&gt;AI helps us in everyday life more than you might think:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your phone suggests the next word before you finish typing.&lt;/li&gt;
&lt;li&gt;Your bank detects suspicious activity before you even notice.&lt;/li&gt;
&lt;li&gt;Your email knows how to separate spam from real messages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&apos;s not magic. It&apos;s just data, models, and logic — working together.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Part 2: How AI learns — and what ML and Deep Learning have to do with it.&lt;/h2&gt;
&lt;p&gt;To make a machine smart, you don&apos;t give it instructions line by line. You &lt;strong&gt;let it learn from examples&lt;/strong&gt; — and that&apos;s what &lt;strong&gt;Machine Learning (ML)&lt;/strong&gt; is.&lt;/p&gt;
&lt;p&gt;Then there&apos;s &lt;strong&gt;Deep Learning&lt;/strong&gt;, a more advanced method that helps machines handle complex tasks — like recognizing speech, analyzing images, or understanding natural language.&lt;/p&gt;
&lt;h3&gt;Want a clear example?&lt;/h3&gt;
&lt;p&gt;Let&apos;s say you live in a smart home with a smart thermostat.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The thermostat uses &lt;strong&gt;AI&lt;/strong&gt; to decide whether to heat the room.&lt;/li&gt;
&lt;li&gt;It uses &lt;strong&gt;ML&lt;/strong&gt; to learn that you usually come home around 7 p.m., so it starts warming up at 6:30.&lt;/li&gt;
&lt;li&gt;It uses &lt;strong&gt;Deep Learning&lt;/strong&gt; to go even further: it checks your location, your calendar, even the way you message friends — and figures out that today you&apos;ll be home early. So it heats the room in advance, without you doing a thing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&apos;s how it works. Step by step, smarter and smarter.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Part 3: What happens after learning — the role of inference.&lt;/h2&gt;
&lt;p&gt;Once the model is trained, the learning phase is over. Now it&apos;s time to &lt;strong&gt;use&lt;/strong&gt; that knowledge.&lt;/p&gt;
&lt;p&gt;This process is called &lt;strong&gt;inference&lt;/strong&gt; — when the AI makes a decision based on what it already knows.&lt;/p&gt;
&lt;h3&gt;Here&apos;s a simple one:&lt;/h3&gt;
&lt;p&gt;You trained a model to tell the difference between oranges and apples.&lt;br /&gt;
Now you show it a new fruit photo.&lt;br /&gt;
It looks at it and says: “That&apos;s an orange.”&lt;br /&gt;
That&apos;s &lt;strong&gt;inference&lt;/strong&gt;. It&apos;s the model in action — making predictions or classifications based on what it learned earlier.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Part 4: Two types of inference — real-time vs batch.&lt;/h2&gt;
&lt;p&gt;Not all AI decisions are made the same way. Sometimes you need &lt;strong&gt;answers instantly&lt;/strong&gt;. Sometimes you need to &lt;strong&gt;process a lot of data quietly in the background&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Let&apos;s break it down:&lt;/p&gt;
&lt;h3&gt;1. Real-time inference&lt;/h3&gt;
&lt;p&gt;This is when the AI reacts &lt;strong&gt;immediately&lt;/strong&gt; to new input.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A smart fridge notifies you that milk is low the second you open the door.&lt;/li&gt;
&lt;li&gt;A navigation app recalculates your route as soon as you take the wrong turn.&lt;/li&gt;
&lt;li&gt;An e-commerce site recommends similar items the moment you click on a product.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Speed matters here. The response has to be fast and seamless.&lt;/p&gt;
&lt;h3&gt;2. Batch inference&lt;/h3&gt;
&lt;p&gt;This happens when the system processes &lt;strong&gt;large amounts of data at once&lt;/strong&gt;, usually on a schedule.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your sales data is analyzed overnight to generate a report by morning.&lt;/li&gt;
&lt;li&gt;A bank reviews all transactions at the end of the day to assess risk levels.&lt;/li&gt;
&lt;li&gt;A job platform scans thousands of resumes every weekend to find top matches.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This type of inference doesn&apos;t need to be instant — it&apos;s more about depth and scale.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;When to use what? Here&apos;s the cheat sheet:&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;You need&lt;/th&gt;
&lt;th&gt;Use this type&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Instant feedback or decision-making&lt;/td&gt;
&lt;td&gt;Real-time inference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large-scale analysis without time pressure&lt;/td&gt;
&lt;td&gt;Batch inference&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;A note from one IT girl to another&lt;/h2&gt;
&lt;p&gt;AI isn&apos;t some futuristic fantasy — it&apos;s already here, quietly making things smoother, smarter, and faster.&lt;br /&gt;
You don&apos;t need to know everything about algorithms to understand how it works.&lt;/p&gt;
&lt;p&gt;If you get this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI = the system that acts smart,&lt;/li&gt;
&lt;li&gt;ML = how the system learns from data,&lt;/li&gt;
&lt;li&gt;Deep Learning = how it handles complex patterns,&lt;/li&gt;
&lt;li&gt;Inference = how it applies what it learned to make decisions,&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then congrats — you&apos;re already ahead of most people.&lt;/p&gt;
&lt;p&gt;Keep learning, stay curious, and don&apos;t be afraid of the tech terms.&lt;br /&gt;
You&apos;re more than smart enough to master this.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>AI &amp; MLOps</category><category>AI</category><category>ML</category><category>Beginners</category><category>Learning</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Docker Run, Swarm &amp; Kubernetes - Scaling Made Simple</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Docker Run vs Swarm vs Kubernetes — a simple guide for beginners ready to scale containers and automate like a pro.</description><pubDate>Tue, 25 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, tech queens! 👩‍💻✨&lt;/p&gt;
&lt;p&gt;Let&apos;s Talk About Scaling — Docker Run, Swarm &amp;amp; Kubernetes Explained Simply 🍭🚀&lt;/p&gt;
&lt;p&gt;Okay girls — you&apos;ve nailed &lt;code&gt;docker run&lt;/code&gt;, spun up your first container, and you&apos;re feeling like a total tech queen.&lt;/p&gt;
&lt;p&gt;But then… your app gets &lt;em&gt;popular&lt;/em&gt; (yas!), you need more power, and suddenly it&apos;s like:&lt;/p&gt;
&lt;p&gt;“Wait… how do I run multiple containers? On multiple servers? Without chaos?”&lt;/p&gt;
&lt;p&gt;Don&apos;t worry — you&apos;re about to &lt;strong&gt;level up&lt;/strong&gt; your container game. Let&apos;s talk &lt;strong&gt;Docker Swarm vs Kubernetes&lt;/strong&gt;, what they do, and how they help you scale with style.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Docker Run: Your First Crush&lt;/h2&gt;
&lt;p&gt;You type:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run my-app
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Boom — your container is alive, running, and you feel unstoppable.&lt;/p&gt;
&lt;p&gt;But here&apos;s the thing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It only launches &lt;strong&gt;one&lt;/strong&gt; container&lt;/li&gt;
&lt;li&gt;If it crashes, you have to fix it &lt;strong&gt;yourself&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Scaling? Load balancing? Not happening&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&apos;s great for learning and testing. But when you want to go big? Time to bring in reinforcements.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Docker Swarm: Your First Automation Sidekick&lt;/h2&gt;
&lt;p&gt;Swarm is Docker&apos;s built-in orchestration tool — your &lt;strong&gt;first step into scaling smart&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;With one command, you can launch multiple containers across different servers, and Swarm handles the rest.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker service create --name my-app --replicas 3 my-image
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Swarm will:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Distribute containers across machines&lt;/li&gt;
&lt;li&gt;Restart them if they crash&lt;/li&gt;
&lt;li&gt;Balance traffic between them&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Basically:&lt;/strong&gt; You focus on building, Swarm keeps it all running.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why I love it:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Easy to use&lt;/li&gt;
&lt;li&gt;No extra tools needed&lt;/li&gt;
&lt;li&gt;Perfect for small projects or learning orchestration&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Kubernetes: The Boss of Container Management&lt;/h2&gt;
&lt;p&gt;If Swarm is your sidekick, &lt;strong&gt;Kubernetes (K8s)&lt;/strong&gt; is the full-blown operations manager. She&apos;s powerful, reliable, and trusted by companies like Google, Netflix, and Spotify.&lt;/p&gt;
&lt;p&gt;Kubernetes can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Auto-scale your apps based on resource usage&lt;/li&gt;
&lt;li&gt;Roll out updates with zero downtime&lt;/li&gt;
&lt;li&gt;Heal itself when something breaks&lt;/li&gt;
&lt;li&gt;Run across clouds and data centers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With just:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl create deployment my-app --image=my-image
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You&apos;ve deployed an app that can scale to the moon — and heal itself along the way.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kubernetes doesn&apos;t just run containers — it runs your platform.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Swarm vs Kubernetes — What&apos;s the Difference?&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Docker Swarm&lt;/th&gt;
&lt;th&gt;Kubernetes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;Simple &amp;amp; fast&lt;/td&gt;
&lt;td&gt;Advanced, more setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scaling&lt;/td&gt;
&lt;td&gt;Basic replicas&lt;/td&gt;
&lt;td&gt;Full auto-scaling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Healing&lt;/td&gt;
&lt;td&gt;Restarts containers&lt;/td&gt;
&lt;td&gt;Smart health checks + recovery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best For&lt;/td&gt;
&lt;td&gt;Learning &amp;amp; light apps&lt;/td&gt;
&lt;td&gt;Serious production systems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vibes&lt;/td&gt;
&lt;td&gt;Chill side project&lt;/td&gt;
&lt;td&gt;Cloud-native powerhouse&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;DevOps Pink Girl Tips&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Start with Docker + Swarm to get the basics down&lt;/li&gt;
&lt;li&gt;Move to Kubernetes when you&apos;re ready for pro-level control&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&quot;https://minikube.sigs.k8s.io/&quot;&gt;Minikube&lt;/a&gt; to run Kubernetes locally&lt;/li&gt;
&lt;li&gt;Learn &lt;code&gt;kubectl&lt;/code&gt; commands like &lt;code&gt;get pods&lt;/code&gt;, &lt;code&gt;describe&lt;/code&gt;, and &lt;code&gt;apply&lt;/code&gt; — they&apos;re gold&lt;/li&gt;
&lt;li&gt;Don&apos;t panic — it all makes sense with practice!&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Final Thoughts: You&apos;ve Got This&lt;/h2&gt;
&lt;p&gt;Whether you&apos;re running a simple app or managing cloud infrastructure like a queen, orchestration is your next big step.&lt;/p&gt;
&lt;p&gt;Docker Run is where we all start.&lt;/p&gt;
&lt;p&gt;Swarm helps us grow.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kubernetes? That&apos;s where the real magic happens.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You&apos;re not just launching containers — you&apos;re building systems, scaling apps, and creating serious DevOps vibes.&lt;/p&gt;
&lt;p&gt;So go flex those tech muscles if you&apos;re stepping into Swarm or K8s life. I&apos;m always here for your container wins!&lt;/p&gt;
&lt;p&gt;Got a favorite &lt;code&gt;kubectl&lt;/code&gt; command or Swarm tip? Share it in the comments — let&apos;s geek out together!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Docker</category><category>Kubernetes</category><category>Containers</category><category>Orchestration</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>How Docker Works Under the Hood - A Girly Tech Deep Dive</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Under the Hood of Docker - What Really Happens When You Run docker run?</description><pubDate>Fri, 21 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, tech queens (and kings, if you&apos;re here too)! 👩‍💻✨&lt;/p&gt;
&lt;p&gt;Today, we&apos;re diving &lt;strong&gt;under the hood of Docker&lt;/strong&gt; to see what actually happens when we run those magical &lt;code&gt;docker run&lt;/code&gt; commands. If you&apos;re anything like me—curious, IT-obsessed, and always wanting to know &lt;em&gt;how stuff actually works&lt;/em&gt;—then you&apos;re in for a treat! 🍭🚀&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;So, What Even Is Docker?&lt;/h2&gt;
&lt;p&gt;Let&apos;s be real—Docker makes life so much easier. Instead of installing a million dependencies, worrying about “it works on my machine” drama (ugh, been there!), we just throw everything into a &lt;strong&gt;container&lt;/strong&gt; and let Docker do its thing.&lt;/p&gt;
&lt;p&gt;But what&apos;s actually happening &lt;strong&gt;behind the scenes&lt;/strong&gt;? Let&apos;s break it down!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Docker Is Not a Virtual Machine (And That&apos;s Important!)&lt;/h2&gt;
&lt;p&gt;Okay, first thing&apos;s first. If you think Docker is like VirtualBox or VMWare, girl, we need to talk! 🙅‍♀️&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Virtual Machines (VMs)&lt;/strong&gt; create a whole new OS inside another OS. That means they&apos;re &lt;strong&gt;slow&lt;/strong&gt;, require tons of &lt;strong&gt;resources&lt;/strong&gt;, and basically act like a separate computer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Docker, on the other hand, doesn&apos;t do that.&lt;/strong&gt; Instead, it runs containers using the same OS &lt;strong&gt;kernel&lt;/strong&gt; as your host machine. Think of it like running multiple apps on your phone—each one is separate, but they all share the same iOS or Android system.&lt;/p&gt;
&lt;p&gt;🚀 &lt;strong&gt;Result:&lt;/strong&gt; Docker containers start in &lt;strong&gt;seconds&lt;/strong&gt;, use &lt;strong&gt;less memory&lt;/strong&gt;, and are &lt;strong&gt;super lightweight&lt;/strong&gt; compared to VMs.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What Happens When You Run &lt;code&gt;docker run&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;You type &lt;code&gt;docker run nginx&lt;/code&gt; and boom—your container is up and running. But what actually happens behind the command? Here&apos;s the tea ☕:&lt;/p&gt;
&lt;p&gt;1️⃣ &lt;strong&gt;Docker CLI talks to Docker Daemon&lt;/strong&gt; 💬&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;CLI (Command-Line Interface)&lt;/strong&gt; sends a request to the &lt;strong&gt;Docker Daemon&lt;/strong&gt; (a background process that does all the hard work). Think of the daemon as Docker&apos;s fairy godmother 🧚‍♀️—it grants your wish to run containers!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2️⃣ &lt;strong&gt;Docker Daemon checks for the image&lt;/strong&gt; 🔍&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you don&apos;t have the &lt;strong&gt;Nginx&lt;/strong&gt; image locally, Docker pulls it from &lt;strong&gt;Docker Hub&lt;/strong&gt; (kind of like an app store for containers).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;3️⃣ &lt;strong&gt;Docker creates a container&lt;/strong&gt; 📦&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It &lt;strong&gt;sets up namespaces&lt;/strong&gt; (more on that below!), &lt;strong&gt;allocates resources&lt;/strong&gt;, and makes sure the container is isolated from your main system.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;4️⃣ &lt;strong&gt;Docker starts the container&apos;s main process&lt;/strong&gt; 🚀&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Containers are just Linux processes running in an isolated environment. Unlike VMs, they don&apos;t boot a full OS—just the app you asked for.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;5️⃣ &lt;strong&gt;You now have an active container!&lt;/strong&gt; 🎉&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;docker ps&lt;/code&gt; and you&apos;ll see it in action!&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;How Docker Keeps Containers Separate&lt;/h2&gt;
&lt;p&gt;If containers share the same OS kernel, how do they stay isolated from each other? Here&apos;s where Linux &lt;strong&gt;namespaces&lt;/strong&gt; and &lt;strong&gt;cgroups&lt;/strong&gt; come in.&lt;/p&gt;
&lt;p&gt;💎 &lt;strong&gt;Namespaces&lt;/strong&gt; = &quot;You do you, I do me!&quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Namespaces make sure each container has &lt;strong&gt;its own private world&lt;/strong&gt;—its own file system, network, process tree, and more.&lt;/li&gt;
&lt;li&gt;This is why when you run &lt;code&gt;ls&lt;/code&gt; inside a container, you don&apos;t see your host system&apos;s files!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;💎 &lt;strong&gt;Cgroups&lt;/strong&gt; = &quot;You get this much CPU, you get this much RAM!&quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Containers share resources, but &lt;strong&gt;cgroups&lt;/strong&gt; ensure that one greedy container doesn&apos;t hog all the CPU or memory.&lt;/li&gt;
&lt;li&gt;It&apos;s like a &lt;em&gt;Netflix account with multiple users&lt;/em&gt;—everyone gets their fair share!&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Why This Matters (And Why You Should Care)&lt;/h2&gt;
&lt;p&gt;So now you know that Docker isn&apos;t magic (though it sure feels like it sometimes ✨). Understanding how Docker really works &lt;strong&gt;helps you debug issues&lt;/strong&gt;, &lt;strong&gt;optimize performance&lt;/strong&gt;, and &lt;strong&gt;use it like a pro&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;👩‍💻 &lt;strong&gt;Next Steps:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Try running &lt;code&gt;docker stats&lt;/code&gt; to see how much CPU/memory your containers use.&lt;/li&gt;
&lt;li&gt;Experiment with &lt;code&gt;docker inspect&lt;/code&gt; to peek inside a container&apos;s metadata.&lt;/li&gt;
&lt;li&gt;Play with &lt;code&gt;docker network ls&lt;/code&gt; to check out how containers communicate!&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;Docker is a total game-changer, but knowing how it actually works makes you unstoppable. Now go flex your new knowledge, container queen! 👑💻🔥&lt;/p&gt;
&lt;p&gt;Tag me if you try any of these tips.&lt;/p&gt;
&lt;p&gt;I&apos;d love to hear about your Docker adventures! 🚀💬&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Docker</category><category>Containers</category><category>Deep Dive</category><category>Architecture</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Docker Compose Explained - Imagine Running Your Own Cafe</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Docker Compose explained with a fun cafe analogy! Learn how to run and deploy apps easily with containers—perfect for beginners and IT pros alike.</description><pubDate>Tue, 18 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, tech queens! 👩‍💻✨&lt;/p&gt;
&lt;p&gt;If you&apos;ve ever felt overwhelmed by all this &lt;strong&gt;Docker&lt;/strong&gt; and &lt;strong&gt;containers&lt;/strong&gt; talk, don&apos;t worry—I got you! Today, we&apos;re diving into Docker in a way that actually makes sense. No boring textbook definitions, just &lt;strong&gt;real-life vibes and practical IT girl wisdom&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;So, picture this: &lt;strong&gt;you&apos;re the head chef of your dream restaurant&lt;/strong&gt;. You&apos;ve got different stations—baking, coffee-making, smoothie-blending. Your goal? Run a smooth, flawless kitchen where every dish comes out &lt;em&gt;chef&apos;s kiss&lt;/em&gt; perfect. Now imagine opening the exact same restaurant in a different city—&lt;strong&gt;how do you make sure everything works the same way?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s where Docker comes in. Let&apos;s break it down!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What Even is Docker?&lt;/h2&gt;
&lt;p&gt;Okay, so think of &lt;strong&gt;Docker as a way to pack up your kitchen stations into perfectly organized &quot;to-go&quot; boxes&lt;/strong&gt;. Inside each box, there&apos;s everything needed to set up a working station—ingredients, tools, instructions, &lt;em&gt;the whole vibe&lt;/em&gt;. When you send this box to another restaurant (aka another server), all they have to do is &lt;strong&gt;unbox it and BOOM—instant setup&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In IT terms:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instead of manually installing software, databases, and dependencies on different servers, Docker &lt;strong&gt;packs them into containers&lt;/strong&gt; that can run anywhere.&lt;/li&gt;
&lt;li&gt;No more “It worked on my machine but not yours” drama—&lt;strong&gt;it runs the same way, every time&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Running a Single Container = Turning On One Kitchen Appliance&lt;/h2&gt;
&lt;p&gt;Let&apos;s say you just need to make coffee. Easy, right? You &lt;strong&gt;press a button, the coffee machine turns on, and magic happens&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In Docker, the equivalent is:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run coffee-maker
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Translation? &lt;strong&gt;“Turn on my coffee machine container and start brewing.”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;But here&apos;s the thing—no one orders JUST coffee. Customers want a &lt;strong&gt;full experience&lt;/strong&gt;: pastries, fresh juice, and a cozy vibe. Running a single Docker container is fine for one task, but what about when you need a &lt;strong&gt;whole team of containers working together&lt;/strong&gt;?&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Docker Compose = Running Your Entire Kitchen Like a Boss&lt;/h2&gt;
&lt;p&gt;Imagine if your kitchen had &lt;strong&gt;zero coordination&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The barista starts making coffee but there&apos;s no milk.&lt;/li&gt;
&lt;li&gt;The baker finishes a croissant, but there&apos;s nowhere to put it because the plates haven&apos;t arrived yet.&lt;/li&gt;
&lt;li&gt;The smoothie blender starts running... but no one put fruit in it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Total chaos, right? That&apos;s exactly what happens when you have multiple containers that don&apos;t know how to work together.&lt;/p&gt;
&lt;p&gt;Enter &lt;strong&gt;Docker Compose&lt;/strong&gt;, aka &lt;strong&gt;the kitchen manager of your IT dreams&lt;/strong&gt;. Instead of manually turning on each appliance one by one, &lt;strong&gt;you write a simple file (&lt;code&gt;compose.yml&lt;/code&gt;) that tells all the stations when and how to start working&lt;/strong&gt;.
Then, with &lt;strong&gt;one command&lt;/strong&gt;, your entire system boots up, perfectly in sync:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose up
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Translation? &lt;strong&gt;&quot;Wake up, kitchen! Let&apos;s do this!&quot;&lt;/strong&gt; 🚀&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;How Does Docker Compose Keep Your Kitchen in Order?&lt;/h2&gt;
&lt;p&gt;Imagine your restaurant serves &lt;strong&gt;a signature breakfast set&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A fresh croissant (baked in the oven 🥐)&lt;/li&gt;
&lt;li&gt;A cappuccino (made in the espresso machine ☕)&lt;/li&gt;
&lt;li&gt;A smoothie (blended to perfection 🍓)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&apos;s how Docker Compose makes sure everything runs smoothly:&lt;/p&gt;
&lt;h3&gt;1 It Starts the Right Appliances First&lt;/h3&gt;
&lt;p&gt;You can&apos;t make a cappuccino before heating the milk, right? Same in tech. Your &lt;strong&gt;databases must start before your app&lt;/strong&gt;, otherwise, it crashes trying to find missing data.&lt;/p&gt;
&lt;p&gt;In Docker Compose, we define &lt;strong&gt;dependencies&lt;/strong&gt;, so containers know &lt;strong&gt;who needs to start first&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;2 It Connects Everything Automatically&lt;/h3&gt;
&lt;p&gt;Your barista needs to &lt;strong&gt;talk to the baker&lt;/strong&gt; to coordinate orders. Same with services in IT—&lt;strong&gt;your app needs to communicate with the database, payment system, and notification service&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Docker Compose &lt;strong&gt;links all containers together&lt;/strong&gt;, so they can &quot;chat&quot; without extra setup.&lt;/p&gt;
&lt;h3&gt;3 It Scales Up When Needed&lt;/h3&gt;
&lt;p&gt;If your cafe gets super popular (hello, influencer magic ✨), you &lt;strong&gt;hire more baristas&lt;/strong&gt; to handle orders. In Docker, if your website gets more traffic, you &lt;strong&gt;easily add more containers&lt;/strong&gt; without breaking a sweat.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose scale coffee=3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Boom. &lt;strong&gt;Three baristas, no waiting in line.&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Why Should an IT Girl Care About Docker?&lt;/h2&gt;
&lt;p&gt;Let&apos;s be real: &lt;strong&gt;if you&apos;re serious about tech, Docker is a game-changer&lt;/strong&gt;.
Whether you&apos;re a &lt;strong&gt;developer, DevOps babe, or cloud queen&lt;/strong&gt;, Docker saves time, reduces errors, and lets you focus on &lt;strong&gt;actual coding instead of fixing messy setups&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;With Docker, you can:&lt;/h3&gt;
&lt;p&gt;✔ &lt;strong&gt;Run the same setup on ANY computer&lt;/strong&gt; - no more “but it works on my laptop” drama.
✔ &lt;strong&gt;Test new features in seconds&lt;/strong&gt; - spin up a new environment with &lt;strong&gt;one command&lt;/strong&gt;.
✔ &lt;strong&gt;Easily switch between projects&lt;/strong&gt; - each app gets its own contained world.
✔ &lt;strong&gt;Deploy apps like a pro&lt;/strong&gt; - your code runs the same on any server, anywhere.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Final Thoughts: Own Your Tech Kitchen!&lt;/h2&gt;
&lt;p&gt;Docker might seem complicated at first, but trust me—it&apos;s just &lt;strong&gt;Tupperware for your code&lt;/strong&gt;. Once you &lt;strong&gt;start thinking in containers&lt;/strong&gt;, managing apps becomes as easy as running your favorite cafe.&lt;/p&gt;
&lt;p&gt;💡 &lt;strong&gt;IT Girl Tip:&lt;/strong&gt; Want to practice? Start by containerizing something simple—like a personal website or a tiny database. Once you get the hang of it, &lt;strong&gt;scaling up will be a breeze!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So, next time someone talks about Docker, just imagine &lt;strong&gt;your dream cafe running smoothly with a single command&lt;/strong&gt;—and know that you, my tech queen, are running the kitchen. 🍽✨&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Let&apos;s go build something amazing!&lt;/strong&gt; 🚀&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Docker</category><category>DockerCompose</category><category>Containers</category><category>Guides</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>DNS for IT Girls - How the Internet Works Like Magic</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Learn how DNS works, from hosts files to DNS servers, caching, and troubleshooting. This IT-girl guide makes networking easy, fun, and beginner-friendly!</description><pubDate>Sat, 15 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, tech queens! 👩‍💻💖&lt;/p&gt;
&lt;p&gt;Today, we&apos;re diving into &lt;strong&gt;DNS&lt;/strong&gt;—the secret behind why you can just type &lt;em&gt;google.com&lt;/em&gt; instead of some long, impossible-to-remember number. DNS makes the internet &lt;strong&gt;easy and user-friendly&lt;/strong&gt;, and once you understand it, you&apos;ll feel like a total networking &lt;strong&gt;goddess&lt;/strong&gt;! 👑💡&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What is DNS?&lt;/h2&gt;
&lt;p&gt;DNS (&lt;strong&gt;Domain Name System&lt;/strong&gt;) is like the &lt;strong&gt;translator of the internet&lt;/strong&gt;. It turns &lt;strong&gt;human-friendly domain names&lt;/strong&gt; (&lt;em&gt;web.yourcompany.net&lt;/em&gt;) into &lt;strong&gt;machine-readable IP addresses&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Think of it like your phone contacts: instead of memorizing phone numbers, you just tap on a name. DNS does the same, but for websites.&lt;/p&gt;
&lt;p&gt;Without DNS, you&apos;d have to type &lt;strong&gt;10.0.0.25&lt;/strong&gt; instead of &lt;em&gt;facebook.com&lt;/em&gt;. Not cute, right? 😅&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Hosts File: The Old-School Hack&lt;/h2&gt;
&lt;p&gt;Before DNS, people manually assigned names to IPs using the &lt;strong&gt;/etc/hosts&lt;/strong&gt; file (yeah, ancient times! 😂). But guess what? You can &lt;strong&gt;still&lt;/strong&gt; use this trick today to override DNS settings on your machine!&lt;/p&gt;
&lt;h3&gt;Pro Tip: Manually Map Names to IPs&lt;/h3&gt;
&lt;p&gt;Let&apos;s say you have a database server with IP &lt;strong&gt;10.0.0.5&lt;/strong&gt;, and you want to access it using the name &lt;strong&gt;database&lt;/strong&gt;. Just add this line to your &lt;strong&gt;/etc/hosts&lt;/strong&gt; file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;10.0.0.5 database
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, whenever you type &lt;code&gt;ping database&lt;/code&gt;, your system will &lt;strong&gt;automatically&lt;/strong&gt; connect to &lt;strong&gt;10.0.0.5&lt;/strong&gt;, no matter what DNS says! #HackTheNetwork 😏💻&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Enter the DNS Server!&lt;/h2&gt;
&lt;p&gt;Managing hostnames manually gets messy &lt;strong&gt;real quick&lt;/strong&gt;, so that&apos;s where &lt;strong&gt;DNS servers&lt;/strong&gt; come in! They &lt;strong&gt;centralize everything&lt;/strong&gt;, so instead of keeping a giant hosts file, your system just &lt;strong&gt;asks a DNS server&lt;/strong&gt; for the right IP.&lt;/p&gt;
&lt;p&gt;For example, if your company&apos;s internal &lt;strong&gt;DNS server&lt;/strong&gt; is at &lt;strong&gt;10.10.10.1&lt;/strong&gt;, your laptop will query it whenever it needs to resolve a hostname. If the server doesn&apos;t know the answer, it &lt;strong&gt;forwards the request up the chain&lt;/strong&gt; until it finds the right IP.&lt;/p&gt;
&lt;h3&gt;Pro Tip: Set a Custom DNS Server&lt;/h3&gt;
&lt;p&gt;To manually tell your system where to look for DNS resolutions, update the &lt;strong&gt;/etc/resolv.conf&lt;/strong&gt; file like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nameserver 10.10.10.1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, &lt;strong&gt;all DNS requests&lt;/strong&gt; will go to &lt;strong&gt;10.10.10.1&lt;/strong&gt; first. 🎯&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Subdomains: The DNS Name Tree&lt;/h2&gt;
&lt;p&gt;Ever wondered why we have &lt;em&gt;maps.yourcompany.net&lt;/em&gt;, &lt;em&gt;mail.yourcompany.net&lt;/em&gt;, and &lt;em&gt;drive.yourcompany.net&lt;/em&gt;? These are &lt;strong&gt;subdomains&lt;/strong&gt;, and they help organize different services inside a company or website. 🌍✨&lt;/p&gt;
&lt;p&gt;Example DNS setup for a company:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;web.yourcompany.net&lt;/strong&gt; → Main website&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;db.yourcompany.net&lt;/strong&gt; → Database server&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mail.yourcompany.net&lt;/strong&gt; → Email services&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DNS ensures that when users type these names, they are sent to the &lt;strong&gt;correct servers&lt;/strong&gt;. It&apos;s basically the &lt;strong&gt;road sign system of the internet!&lt;/strong&gt; 🚦&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;DNS Caching: How the Internet Gets Faster&lt;/h2&gt;
&lt;p&gt;Every time you visit a website, your system &lt;strong&gt;caches&lt;/strong&gt; (stores) the DNS result so it doesn&apos;t have to ask again. This &lt;strong&gt;speeds things up&lt;/strong&gt; 🚄 but can sometimes cause problems when IPs change.&lt;/p&gt;
&lt;h3&gt;How to Clear Your DNS Cache&lt;/h3&gt;
&lt;p&gt;If a website stops loading properly, refreshing the DNS cache might help:&lt;/p&gt;
&lt;p&gt;🖥️ &lt;strong&gt;On Windows:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ipconfig /flushdns
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;💻 &lt;strong&gt;On Mac/Linux:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo systemd-resolve --flush-caches
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now your system will request fresh DNS info instead of using old data. 🔥&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Public vs Private DNS: Who Controls the Internet?&lt;/h2&gt;
&lt;p&gt;If your DNS server &lt;strong&gt;doesn&apos;t know&lt;/strong&gt; an answer, it &lt;strong&gt;forwards the request&lt;/strong&gt; to &lt;strong&gt;public DNS servers&lt;/strong&gt; like:&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Google DNS&lt;/strong&gt; → &lt;code&gt;8.8.8.8&lt;/code&gt;&lt;br /&gt;
✅ &lt;strong&gt;Cloudflare DNS&lt;/strong&gt; → &lt;code&gt;1.1.1.1&lt;/code&gt;&lt;br /&gt;
✅ &lt;strong&gt;OpenDNS&lt;/strong&gt; → &lt;code&gt;208.67.222.222&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;But for &lt;strong&gt;internal company networks&lt;/strong&gt;, private DNS servers &lt;strong&gt;keep things secure&lt;/strong&gt;. For example, if you work at &lt;em&gt;yourcompany.net&lt;/em&gt;, you don&apos;t want &lt;strong&gt;random strangers&lt;/strong&gt; resolving your internal servers! 🚨&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Recap: DNS is the GPS of the Internet!&lt;/h2&gt;
&lt;p&gt;Now you know that &lt;strong&gt;DNS&lt;/strong&gt; is the backbone of the web—it translates names into IPs, manages subdomains, caches results for speed, and allows you to &lt;strong&gt;override settings when needed&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Quick Cheat Sheet:&lt;/h3&gt;
&lt;p&gt;✅ &lt;strong&gt;/etc/hosts&lt;/strong&gt; → Manually map names to IPs&lt;br /&gt;
✅ &lt;strong&gt;/etc/resolv.conf&lt;/strong&gt; → Set your preferred DNS server&lt;br /&gt;
✅ &lt;strong&gt;ping, nslookup, dig&lt;/strong&gt; → DNS troubleshooting tools&lt;br /&gt;
✅ &lt;strong&gt;ipconfig /flushdns&lt;/strong&gt; → Clear DNS cache (Windows)&lt;br /&gt;
✅ &lt;strong&gt;systemd-resolve --flush-caches&lt;/strong&gt; → Clear DNS cache (Linux/Mac)&lt;/p&gt;
&lt;p&gt;You&apos;re officially a &lt;strong&gt;DNS queen&lt;/strong&gt; now! 👑💻 Have you ever played around with your DNS settings? Let&apos;s chat in the comments! 💬✨&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>SysAdmin &amp; IT Pro</category><category>Networking</category><category>Internet</category><category>Beginners</category><category>Guides</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Linux for Beginners - Essential Commands Every IT Girl Must Know</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Master Linux commands &amp; boost your IT skills! Learn essential commands for navigating, managing files &amp; running processes like a pro.</description><pubDate>Mon, 10 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, lovely tech queens! 👩‍💻✨&lt;/p&gt;
&lt;p&gt;If you&apos;re stepping into the &lt;strong&gt;world of Linux&lt;/strong&gt;, welcome to the &lt;em&gt;coolest club ever&lt;/em&gt;!
I know, the command line can look super intimidating at first (been there, freaked out 🙈), but trust me—once you get the hang of it, you&apos;ll feel &lt;strong&gt;like a total hacker goddess&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Today, I&apos;m sharing my &lt;strong&gt;ultimate Linux cheat sheet&lt;/strong&gt;—the &lt;strong&gt;basic commands&lt;/strong&gt; every IT girl needs to master. These will help you &lt;strong&gt;navigate, manage files, and work like a pro&lt;/strong&gt;. Let&apos;s dive in! 🚀&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;First Things First: Why Even Bother with Linux?&lt;/h2&gt;
&lt;p&gt;So, why are we talking about Linux when macOS and Windows exist? Because &lt;strong&gt;real IT girls&lt;/strong&gt; know that:&lt;/p&gt;
&lt;p&gt;✔️ &lt;strong&gt;Most servers run on Linux&lt;/strong&gt;, so if you dream of a tech career, you NEED this.&lt;br /&gt;
✔️ &lt;strong&gt;Developers and cybersecurity pros swear by it&lt;/strong&gt;—like, ethical hacking? Linux is your BFF.&lt;br /&gt;
✔️ &lt;strong&gt;It&apos;s free, open-source, and powerful&lt;/strong&gt;—total boss babe energy.&lt;/p&gt;
&lt;p&gt;And let&apos;s be real—nothing screams &lt;em&gt;I know my sh&lt;/em&gt;t* like typing commands in a black terminal.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Getting Started: Open That Terminal!&lt;/h2&gt;
&lt;p&gt;Before we slay the Linux game, let&apos;s &lt;strong&gt;open the terminal&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;On Linux:&lt;/strong&gt; &lt;code&gt;Ctrl + Alt + T&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;On Mac:&lt;/strong&gt; Use &quot;Terminal&quot; from Spotlight (&lt;code&gt;Cmd + Space&lt;/code&gt;, then type “Terminal”).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;On Windows:&lt;/strong&gt; Install &lt;strong&gt;WSL (Windows Subsystem for Linux)&lt;/strong&gt; or use &lt;strong&gt;Git Bash&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Alright, &lt;strong&gt;let&apos;s get into the commands&lt;/strong&gt; that will make you feel like a total IT girl! 💅&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Navigating Like a Pro: Moving Around Folders&lt;/h2&gt;
&lt;p&gt;💡 The first thing you need to learn is &lt;strong&gt;how to navigate your system&lt;/strong&gt;.
Forget clicking around—let&apos;s &lt;strong&gt;move like a boss&lt;/strong&gt; in the terminal.&lt;/p&gt;
&lt;h3&gt;1 Where Am I? (Check Current Directory)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pwd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 This tells you which folder you&apos;re in. Super useful if you ever feel lost.&lt;/p&gt;
&lt;h3&gt;2 What&apos;s Inside This Folder? (List Files)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ls
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 This shows all files and folders in the current directory.&lt;/p&gt;
&lt;p&gt;💖 &lt;strong&gt;Pro tip:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;ls -l&lt;/code&gt; for more details (file size, date, owner).&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;ls -a&lt;/code&gt; to see hidden files (yes, Linux hides stuff from you).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3 Moving Between Folders (Change Directory)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd foldername
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Moves you into a folder.&lt;/p&gt;
&lt;p&gt;Want to &lt;strong&gt;go back&lt;/strong&gt;?&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd ..
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Moves &lt;strong&gt;up&lt;/strong&gt; one level.&lt;/p&gt;
&lt;p&gt;Or just type:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd ~
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Takes you straight to your &lt;strong&gt;home directory&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;✨ &lt;em&gt;Think of these commands as teleporting through your files. No more aimless clicking!&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;File &amp;amp; Folder Magic: Creating, Moving &amp;amp; Deleting&lt;/h2&gt;
&lt;p&gt;Alright, now that we can &lt;strong&gt;move around&lt;/strong&gt;, let&apos;s &lt;strong&gt;start making things happen&lt;/strong&gt;!&lt;/p&gt;
&lt;h3&gt;4 Create a New Folder (mkdir)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir myfolder
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Boom! A new folder is born.&lt;/p&gt;
&lt;p&gt;💖 &lt;strong&gt;Pro tip:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Want to create multiple nested folders? Use &lt;code&gt;mkdir -p parent/child/grandchild&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5 Create a New File (touch)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;touch myfile.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Creates an empty file. Perfect for testing.&lt;/p&gt;
&lt;h3&gt;6 Move or Rename a File (mv)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mv oldname.txt newname.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Works for &lt;strong&gt;renaming&lt;/strong&gt; files AND &lt;strong&gt;moving&lt;/strong&gt; them.&lt;/p&gt;
&lt;p&gt;💖 &lt;strong&gt;Example:&lt;/strong&gt; Move a file into a folder:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mv myfile.txt myfolder/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now it&apos;s inside &lt;em&gt;myfolder&lt;/em&gt;. So neat!&lt;/p&gt;
&lt;h3&gt;7 Copy a File (cp)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cp myfile.txt copyfile.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Now you have a duplicate!&lt;/p&gt;
&lt;p&gt;Want to copy a &lt;strong&gt;whole folder&lt;/strong&gt;?&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cp -r myfolder newfolder
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 The &lt;code&gt;-r&lt;/code&gt; flag copies everything inside too!&lt;/p&gt;
&lt;h3&gt;8 Delete a File (rm)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rm myfile.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Bye-bye, file!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Be super careful!&lt;/strong&gt; If you use:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rm -r myfolder
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 It deletes the entire folder + its contents. &lt;strong&gt;No undo!&lt;/strong&gt; 😱&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Reading &amp;amp; Editing Files&lt;/h2&gt;
&lt;p&gt;Alright, let&apos;s check what&apos;s &lt;strong&gt;inside&lt;/strong&gt; our files.&lt;/p&gt;
&lt;h3&gt;9 Read a File (cat)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cat myfile.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Shows the contents of a file instantly.&lt;/p&gt;
&lt;p&gt;💖 &lt;strong&gt;Pro tip:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If the file is &lt;strong&gt;too long&lt;/strong&gt;, use:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;less myfile.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 This lets you &lt;strong&gt;scroll&lt;/strong&gt; through it. Press &lt;code&gt;q&lt;/code&gt; to exit.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;10 Edit a File (nano)&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nano myfile.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Opens a simple text editor inside the terminal.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Running Programs &amp;amp; Managing Processes&lt;/h2&gt;
&lt;h3&gt;Check Running Processes&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ps aux
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Shows all running programs.&lt;/p&gt;
&lt;h3&gt;Kill a Stuck Program&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kill PID
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Or use:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pkill -f process_name
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 This kills the process &lt;strong&gt;by name&lt;/strong&gt; (super handy!).&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Bonus IT Girl Tricks!&lt;/h2&gt;
&lt;h3&gt;Redirecting Output: &amp;gt; vs &amp;gt;&amp;gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;echo &quot;Hello&quot; &amp;gt; file.txt&lt;/code&gt; &lt;strong&gt;overwrites&lt;/strong&gt; the file.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;echo &quot;Hello&quot; &amp;gt;&amp;gt; file.txt&lt;/code&gt; &lt;strong&gt;adds&lt;/strong&gt; text to the file without deleting old content.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;View Command History&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;history
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Lists all commands you&apos;ve used—no more &quot;What was that command again?&quot; moments!&lt;/p&gt;
&lt;h3&gt;Find Any File&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;find / -name &quot;filename&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 Searches for a file anywhere on your system.&lt;/p&gt;
&lt;p&gt;Want something &lt;strong&gt;faster&lt;/strong&gt;?&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;locate filename
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 But first, run:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo updatedb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📌 This updates the file database for &lt;code&gt;locate&lt;/code&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Final Thoughts: Own That Terminal, Queen!&lt;/h2&gt;
&lt;p&gt;So, my fellow &lt;strong&gt;IT girl&lt;/strong&gt;, this is your &lt;strong&gt;Linux survival kit&lt;/strong&gt;. These commands will help you &lt;strong&gt;navigate like a pro, manage files, and even kill frozen programs like a boss&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;💡 &lt;strong&gt;Your next steps:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Practice these commands daily.&lt;/strong&gt;&lt;br /&gt;
✅ &lt;strong&gt;Start using Linux as your main OS (if possible).&lt;/strong&gt;&lt;br /&gt;
✅ &lt;strong&gt;Experiment &amp;amp; break things—just don&apos;t delete your whole system!&lt;/strong&gt; 😆&lt;/p&gt;
&lt;p&gt;And remember, &lt;strong&gt;every tech queen starts somewhere&lt;/strong&gt;—the key is to &lt;strong&gt;keep learning&lt;/strong&gt;. 💕&lt;/p&gt;
&lt;p&gt;💬 Got questions? Comment below, and let&apos;s geek out together! 🚀&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>SysAdmin &amp; IT Pro</category><category>Linux</category><category>CLI</category><category>Beginners</category><category>Guides</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Docker for Girls - Understanding docker ps Once and For All</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Learn docker ps easily! This fun and beginner-friendly guide breaks down the Docker command to list, filter, and inspect containers.</description><pubDate>Fri, 07 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey girls! 💖&lt;/p&gt;
&lt;p&gt;If you&apos;re as passionate about IT and Docker as I am but sometimes find it a bit complicated, don&apos;t worry! Today, I&apos;ll explain the super-important docker ps command in a way that anyone can understand! 😉&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What is &lt;code&gt;docker ps&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;This command shows all the containers on your computer. It tells you which ones are running, which ones are stopped, and what their settings are. Think of &lt;code&gt;docker ps&lt;/code&gt; as your list of all containers—just like a list of open tabs in your browser. 🖥️&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;When Should You Use &lt;code&gt;docker ps&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;You use &lt;code&gt;docker ps&lt;/code&gt; when you want to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;See which containers are currently running.&lt;/li&gt;
&lt;li&gt;Find out which containers have stopped.&lt;/li&gt;
&lt;li&gt;Get the ID or name of a container.&lt;/li&gt;
&lt;li&gt;Check which ports are open.&lt;/li&gt;
&lt;li&gt;View the size of a container.&lt;/li&gt;
&lt;li&gt;Check if a container is healthy (yes, containers can have bad days too!).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;How to Use &lt;code&gt;docker ps&lt;/code&gt; (Examples)&lt;/h2&gt;
&lt;h3&gt;The Simplest Command:&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Shows &lt;strong&gt;only running&lt;/strong&gt; containers.&lt;/p&gt;
&lt;h3&gt;Want to See All Containers, Even Stopped Ones?&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps -a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now you can see both running and stopped containers. The &lt;em&gt;STATUS&lt;/em&gt; column will show why a container stopped (e.g., due to an error or just being turned off).&lt;/p&gt;
&lt;h3&gt;How to View the Last Created Container?&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps --latest
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Great for checking if the most recently created container is working properly.&lt;/p&gt;
&lt;h3&gt;How to Check How Much Space a Container is Using?&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps -s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This helps when your disk space is running low. 🧹&lt;/p&gt;
&lt;h3&gt;How to See Only Container IDs?&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps -q
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Useful when you need container IDs without extra details.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Filtering &lt;code&gt;docker ps&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;To quickly find the container you need, use filters:&lt;/p&gt;
&lt;p&gt;🔍 Find a container with a specific label:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps --filter label=app=my-app
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🔍 Show containers created before a specific one:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps --filter before=my-app-container
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🔍 Find containers using a specific volume:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps --filter volume=my-volume
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🔍 See containers in a specific network:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps --filter network=my-network
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;How to Change &lt;code&gt;docker ps&lt;/code&gt; Output?&lt;/h2&gt;
&lt;p&gt;By default, &lt;code&gt;docker ps&lt;/code&gt; outputs a table, but you can customize what is displayed:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps --format &apos;table {{.ID}}\t{{.Image}}\t{{.Status}}&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will show only the container ID, image, and status.&lt;/p&gt;
&lt;p&gt;Want JSON format? Easy:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker ps --format json
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Pro Tips!&lt;/h2&gt;
&lt;p&gt;✨ Don&apos;t forget about &lt;code&gt;-a&lt;/code&gt;: If a container stops, &lt;code&gt;docker ps&lt;/code&gt; won&apos;t show it by default, so use &lt;code&gt;docker ps -a&lt;/code&gt;.&lt;br /&gt;
✨ &lt;strong&gt;Set up your favorite commands&lt;/strong&gt;: For convenience, create aliases for frequently used commands.&lt;br /&gt;
✨ &lt;strong&gt;Monitor container sizes&lt;/strong&gt;: Keep only the necessary containers to avoid wasting disk space.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;docker ps&lt;/code&gt; command is your go-to tool for managing containers. Now you know how to check which containers are running, which have stopped, and how to filter them. Easy, right? 😉&lt;/p&gt;
&lt;p&gt;I hope this guide helped! If you have any questions, feel free to ask—I&apos;m always happy to chat about Docker. 💻💖&lt;/p&gt;
&lt;p&gt;See you soon, IT girl! 🚀&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Docker</category><category>Containers</category><category>CLI</category><category>Beginners</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Mastering Terraform Tags Like a True IT Queen</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Learn how to master Terraform tags for cloud resource management, automation, and cost tracking. Discover best practices, default tags, and merging strategies!</description><pubDate>Tue, 04 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey girls!&lt;/p&gt;
&lt;p&gt;If you&apos;re as obsessed with Infrastructure as Code (IaC) as I am, then you know that Terraform is THE tool to have in your IT arsenal. And if you&apos;re working with cloud resources, you&apos;ve probably heard about &lt;strong&gt;tags&lt;/strong&gt; - those little key-value labels that help you organize, track expenses, and automate processes.&lt;/p&gt;
&lt;p&gt;But let&apos;s be honest: tags can sometimes feel like a necessary evil, especially when you&apos;re managing multiple cloud environments.&lt;/p&gt;
&lt;p&gt;Don&apos;t worry, darling! In this post, we&apos;ll break down Terraform tags: why you need them, how to use them, and the best practices to follow. So grab your favorite coffee ☕ and let&apos;s dive in!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What Are Terraform Tags?&lt;/h2&gt;
&lt;p&gt;Think of Terraform tags as little stickers you can attach to cloud resources to &lt;strong&gt;keep things organized and manageable&lt;/strong&gt;. They are &lt;strong&gt;key-value pairs&lt;/strong&gt; that allow you to classify resources by purpose, environment, or owner.&lt;/p&gt;
&lt;p&gt;📌 Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;tags = {
  Environment = &quot;Production&quot;
  Owner       = &quot;IT Girl Dev Team&quot;
  Project     = &quot;CoolNewApp&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;💡 Why do you need this? Because proper tagging makes resource management easier, helps automate processes, and controls access. Plus, it keeps your infrastructure &lt;strong&gt;structured and aesthetic&lt;/strong&gt; - and we don&apos;t want a messy cloud, do we? ❌&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Tags vs. tags_all: What&apos;s the Difference?&lt;/h2&gt;
&lt;p&gt;Terraform has two types of tags: &lt;strong&gt;tags&lt;/strong&gt; and &lt;strong&gt;tags_all&lt;/strong&gt;. They sound similar but serve different purposes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;tags&lt;/strong&gt; - The tags you define in your Terraform code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tags_all&lt;/strong&gt; - A read-only attribute that Terraform pulls from the resource itself.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;📌 Example (referencing tags in Azure):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;azurerm_virtual_network.example.tags_all
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Why Should You Use Tags?&lt;/h2&gt;
&lt;p&gt;Tags aren&apos;t just for aesthetics (although we love that too 💅). Here are some key reasons why tagging is essential:&lt;/p&gt;
&lt;h3&gt;Organization&lt;/h3&gt;
&lt;p&gt;Imagine having thousands of resources in your AWS account without tags. Total chaos, right? Tags help group resources by &lt;strong&gt;environment, project, or team&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;📌 Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;tags = {
  env     = &quot;staging&quot;
  owner   = &quot;DevOps Team&quot;
  purpose = &quot;testing&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Cost Management&lt;/h3&gt;
&lt;p&gt;Cloud bills can be terrifying 😱, but Terraform tags help you track where your money is going.&lt;/p&gt;
&lt;p&gt;📌 Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;tags = {
  cost_center = &quot;Marketing Analytics&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Automation&lt;/h3&gt;
&lt;p&gt;You know how much I love automation! Tags allow you to manage deployments, shut down unnecessary resources, and set up backups.&lt;/p&gt;
&lt;p&gt;📌 Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;tags = {
  auto_shutdown = &quot;true&quot;
  deploy        = &quot;true&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Access Control&lt;/h3&gt;
&lt;p&gt;You can configure tags to restrict access to resources using AWS IAM policies.&lt;/p&gt;
&lt;p&gt;📌 Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;tags = {
  Environment = &quot;Development&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;How to Add Tags to Terraform Resources&lt;/h2&gt;
&lt;p&gt;It&apos;s super simple! Just use the &lt;code&gt;tags&lt;/code&gt; attribute inside the resource block.&lt;/p&gt;
&lt;p&gt;📌 Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;resource &quot;aws_instance&quot; &quot;my_instance&quot; {
  tags = {
    Environment = &quot;Production&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Want to Add Multiple Tags? Easy!&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;tags = {
  Environment = &quot;Development&quot;
  Owner       = &quot;Leia Organa&quot;
  Department  = &quot;Rebel Alliance&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;What Are Terraform Default Tags?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Default Tags&lt;/strong&gt; are automatic tags applied to ALL resources without having to duplicate them in every block.&lt;/p&gt;
&lt;p&gt;📌 Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;variable &quot;common_tags&quot; {
  type = map(string)
  default = {
    Environment = &quot;Development&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then, just use them like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;tags = var.common_tags
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;How to Override Default Tags?&lt;/h3&gt;
&lt;p&gt;Use the &lt;code&gt;merge()&lt;/code&gt; function to combine default and custom tags.&lt;/p&gt;
&lt;p&gt;📌 Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;resource &quot;aws_instance&quot; &quot;my_instance&quot; {
  tags = merge(
    var.common_tags,
    {
      Name = &quot;MyAwesomeServer&quot;
    }
  )
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;How to Ignore Tag Changes in Terraform?&lt;/h2&gt;
&lt;p&gt;If external systems modify your tags (&lt;em&gt;Azure Databricks, I see you 👀&lt;/em&gt;), tell Terraform to ignore them!&lt;/p&gt;
&lt;p&gt;📌 Example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;resource &quot;aws_instance&quot; &quot;my_instance&quot; {
  lifecycle {
    ignore_changes = [tags]
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or ignore them at the provider level:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;provider &quot;aws&quot; {
  ignore_tags = [&quot;CostCenter&quot;]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Best Practices for Terraform Tags&lt;/h2&gt;
&lt;p&gt;💡 Tips to keep your cloud tagging strategy clean and effective:&lt;/p&gt;
&lt;p&gt;✔ &lt;strong&gt;Be consistent&lt;/strong&gt; 👑 - Use the same key names across resources.&lt;br /&gt;
✔ &lt;strong&gt;Document your tags&lt;/strong&gt; 📚 - Define what each tag means.&lt;br /&gt;
✔ &lt;strong&gt;Automate tagging&lt;/strong&gt; ⚙️ - Use Terraform modules.&lt;br /&gt;
✔ &lt;strong&gt;Use Default Tags&lt;/strong&gt; ✅ - Follow the DRY (Don&apos;t Repeat Yourself) principle.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Level Up Your Terraform with Spacelift&lt;/h2&gt;
&lt;p&gt;Want a flawless GitOps process? Try &lt;strong&gt;Spacelift&lt;/strong&gt;! It makes Terraform even better with:&lt;/p&gt;
&lt;p&gt;✨ &lt;strong&gt;Security policies (OPA)&lt;/strong&gt; 🔐&lt;br /&gt;
✨ &lt;strong&gt;Multi-IaC support (Terraform + Kubernetes + Ansible)&lt;/strong&gt; 🔄&lt;br /&gt;
✨ &lt;strong&gt;Self-service infrastructure&lt;/strong&gt; 💁‍♀️&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Terraform tags may seem small, but they make a &lt;strong&gt;huge difference&lt;/strong&gt; in cloud resource management. Start using them correctly, and your future IT-self will thank you!&lt;/p&gt;
&lt;p&gt;Share your favorite Terraform hacks in the comments or on Twitter! 💬💻&lt;/p&gt;
&lt;p&gt;Until next time, keep slaying the IT world! 🚀💖&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Terraform</category><category>IaC</category><category>Tagging</category><category>Guides</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>AWS AI/ML - The Ultimate Guide for IT Girls</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Unlock AWS AI/ML! Discover how Amazon&apos;s AI tools like SageMaker, Lex, and Polly automate tasks, enhance CX, and drive innovation—no coding needed!</description><pubDate>Fri, 28 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, my tech-savvy girls!&lt;/p&gt;
&lt;p&gt;💕👩‍💻 If you&apos;re like me and &lt;strong&gt;obsessed with IT and machine learning&lt;/strong&gt;, let&apos;s break down &lt;strong&gt;AWS AI/ML services&lt;/strong&gt;, which help companies (and even individuals) use &lt;strong&gt;artificial intelligence&lt;/strong&gt; without all the hassle!&lt;/p&gt;
&lt;p&gt;⚡ AWS is &lt;strong&gt;like Netflix for IT&lt;/strong&gt;, but instead of movies, it&apos;s a massive ecosystem of tools that let businesses &lt;strong&gt;automate processes, analyze data, create chatbots, and even turn text into lifelike speech&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Today, I&apos;ll break down &lt;strong&gt;everything in the most detailed and easy-to-understand way&lt;/strong&gt;, so that by the end of this article, you&apos;ll &lt;strong&gt;feel like an expert!&lt;/strong&gt; 🚀💡&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;AWS: The Magical Toolbox for IT Girls&lt;/h2&gt;
&lt;p&gt;AWS is &lt;strong&gt;Amazon&apos;s global cloud platform&lt;/strong&gt;, which allows businesses and developers to use a wide range of technologies &lt;strong&gt;on a subscription basis&lt;/strong&gt;, without needing to build their &lt;strong&gt;own data centers&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;How does it work?&lt;/p&gt;
&lt;p&gt;1️⃣ You log into AWS, pick the service you need, and start using it.&lt;br /&gt;
2️⃣ Everything runs in the cloud, so you don&apos;t need to worry about managing servers.&lt;br /&gt;
3️⃣ AWS automates all processes and gives you &lt;strong&gt;ready-made AI/ML solutions&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;AWS offers &lt;strong&gt;a TON of services&lt;/strong&gt;, and now I&apos;ll break down &lt;strong&gt;the most interesting and useful ones!&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;AWS AI/ML is Like an Amusement Park: Let&apos;s Ride!&lt;/h2&gt;
&lt;h3&gt;1. Amazon SageMaker - The Queen of Machine Learning&lt;/h3&gt;
&lt;p&gt;💡 &lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Amazon SageMaker is &lt;strong&gt;the most powerful AWS tool for machine learning&lt;/strong&gt;. It lets you &lt;strong&gt;build, train, and deploy ML models&lt;/strong&gt; without needing &lt;strong&gt;deep programming knowledge&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;💖 &lt;strong&gt;How does it work?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✔️ You choose an ML model (or use a prebuilt one).&lt;br /&gt;
✔️ Upload data (e.g., last year&apos;s sales for an online store).&lt;br /&gt;
✔️ SageMaker trains the model and makes predictions.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Where is it used in real life?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Finance&lt;/strong&gt; - predicts stock price movements.&lt;br /&gt;
✅ &lt;strong&gt;Weather forecasting&lt;/strong&gt; - analyzes temperature trends.&lt;br /&gt;
✅ &lt;strong&gt;E-commerce&lt;/strong&gt; - recommends products to customers.&lt;br /&gt;
✅ &lt;strong&gt;Fraud detection&lt;/strong&gt; - identifies suspicious bank transactions.&lt;/p&gt;
&lt;p&gt;💡 &lt;strong&gt;IT Girl Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you&apos;re new to ML, SageMaker &lt;strong&gt;automates everything&lt;/strong&gt;—just upload data, and it does the magic for you! ✨&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;2. Amazon Lex - Smart Chatbots &amp;amp; Virtual Assistants&lt;/h2&gt;
&lt;p&gt;💡 &lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Amazon Lex is an &lt;strong&gt;AI service for creating smart chatbots&lt;/strong&gt; and virtual assistants &lt;strong&gt;like Alexa or Siri&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;💖 &lt;strong&gt;How does it work?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✔️ Uses &lt;strong&gt;Natural Language Processing (NLP)&lt;/strong&gt; to understand what users are saying.&lt;br /&gt;
✔️ Processes &lt;strong&gt;both text and voice&lt;/strong&gt; commands.&lt;br /&gt;
✔️ Works based on &lt;strong&gt;intents&lt;/strong&gt;—you set up sample phrases, and the bot learns to respond.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Where is it used in real life?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Customer service chatbots&lt;/strong&gt; - answer FAQs without human agents.&lt;br /&gt;
✅ &lt;strong&gt;Virtual assistants&lt;/strong&gt; - Alexa-style bots for businesses.&lt;br /&gt;
✅ &lt;strong&gt;Data search bots&lt;/strong&gt; - find information quickly based on user queries.&lt;/p&gt;
&lt;p&gt;💡 &lt;strong&gt;IT Girl Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Want to &lt;strong&gt;create your own chatbot&lt;/strong&gt;? Lex helps you do it &lt;strong&gt;without complex coding!&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;3. Amazon Polly - The AI Voice Generator (Talking Robot)&lt;/h2&gt;
&lt;p&gt;💡 &lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Amazon Polly is an &lt;strong&gt;AI tool that turns text into lifelike speech&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;💖 &lt;strong&gt;How does it work?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✔️ You type in a text.&lt;br /&gt;
✔️ Polly reads it &lt;strong&gt;in a natural-sounding voice&lt;/strong&gt; (male, female, child, and even with accents!).&lt;br /&gt;
✔️ You can adjust &lt;strong&gt;tone, speed, and emotions&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Where is it used in real life?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Audiobooks &amp;amp; articles&lt;/strong&gt; 📚&lt;br /&gt;
✅ &lt;strong&gt;Voiceovers for videos &amp;amp; ads&lt;/strong&gt; 🎬&lt;br /&gt;
✅ &lt;strong&gt;Accessibility for visually impaired users&lt;/strong&gt; 👀&lt;br /&gt;
✅ &lt;strong&gt;Smart voice assistants&lt;/strong&gt; 💁‍♀️&lt;/p&gt;
&lt;p&gt;💡 &lt;strong&gt;IT Girl Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you have a &lt;strong&gt;YouTube channel or TikTok&lt;/strong&gt;, Polly can &lt;strong&gt;automatically voiceover your scripts!&lt;/strong&gt; 🔥&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;4. Amazon Rekognition - AI for Facial &amp;amp; Object Detection&lt;/h2&gt;
&lt;p&gt;💡 &lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Amazon Rekognition is &lt;strong&gt;an AI system that analyzes images and videos&lt;/strong&gt; to detect &lt;strong&gt;people, objects, and even emotions&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;💖 &lt;strong&gt;How does it work?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✔️ Recognizes &lt;strong&gt;faces&lt;/strong&gt; and &lt;strong&gt;objects&lt;/strong&gt;.&lt;br /&gt;
✔️ Detects &lt;strong&gt;human emotions&lt;/strong&gt;.&lt;br /&gt;
✔️ Can &lt;strong&gt;analyze live video streams&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Where is it used in real life?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Security&lt;/strong&gt; - surveillance cameras automatically recognize faces.&lt;br /&gt;
✅ &lt;strong&gt;Content moderation&lt;/strong&gt; - filters out inappropriate images.&lt;br /&gt;
✅ &lt;strong&gt;Marketing analytics&lt;/strong&gt; - studies customer reactions to ads.&lt;/p&gt;
&lt;p&gt;💡 &lt;strong&gt;IT Girl Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you work in &lt;strong&gt;cybersecurity or UX design&lt;/strong&gt;, Rekognition can &lt;strong&gt;automate visual content analysis&lt;/strong&gt;!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;5. Amazon Textract - AI-Powered Document Scanning&lt;/h2&gt;
&lt;p&gt;💡 &lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Amazon Textract &lt;strong&gt;extracts text, tables, and forms from scanned documents&lt;/strong&gt; and images.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Where is it used in real life?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Finance&lt;/strong&gt; - analyzing invoices &amp;amp; receipts.&lt;br /&gt;
✅ &lt;strong&gt;Healthcare&lt;/strong&gt; - digitizing medical records.&lt;br /&gt;
✅ &lt;strong&gt;Legal&lt;/strong&gt; - automating document review.&lt;/p&gt;
&lt;p&gt;💡 &lt;strong&gt;IT Girl Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you have &lt;strong&gt;a pile of paperwork&lt;/strong&gt;, Textract can &lt;strong&gt;turn it into searchable digital data!&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;6. Amazon Translate - AI-Powered Language Translator&lt;/h2&gt;
&lt;p&gt;💡 &lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Amazon Translate is &lt;strong&gt;AWS&apos;s AI-powered translation tool&lt;/strong&gt; that translates &lt;strong&gt;text in real time&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Where is it used in real life?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Website &amp;amp; app localization&lt;/strong&gt;.&lt;br /&gt;
✅ &lt;strong&gt;Business document translation&lt;/strong&gt;.&lt;br /&gt;
✅ &lt;strong&gt;Social media &amp;amp; comment analysis&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;💡 &lt;strong&gt;IT Girl Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Need to &lt;strong&gt;quickly translate&lt;/strong&gt; a large amount of text? Amazon Translate does it &lt;strong&gt;in seconds&lt;/strong&gt;!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;7. Amazon Transcribe - Automatic Speech-to-Text&lt;/h2&gt;
&lt;p&gt;💡 &lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Amazon Transcribe &lt;strong&gt;turns spoken words into text automatically!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Where is it used in real life?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Subtitles for videos&lt;/strong&gt; 🎬&lt;br /&gt;
✅ &lt;strong&gt;Lecture &amp;amp; interview transcriptions&lt;/strong&gt; 🎤&lt;/p&gt;
&lt;p&gt;💡 &lt;strong&gt;IT Girl Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;must-have tool&lt;/strong&gt; for bloggers, journalists, and students!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;8. Amazon Kendra - The AI-Powered Search Engine&lt;/h2&gt;
&lt;p&gt;💡 &lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Amazon Kendra is &lt;strong&gt;like Google for your company&apos;s internal files&lt;/strong&gt;—it helps businesses quickly find documents, reports, and emails.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Where is it used in real life?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Corporate search&lt;/strong&gt; - fast retrieval of policies, reports, and knowledge base articles.&lt;br /&gt;
✅ &lt;strong&gt;Customer support&lt;/strong&gt; - quickly pulls up relevant FAQs.&lt;/p&gt;
&lt;p&gt;💡 &lt;strong&gt;IT Girl Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you work with &lt;strong&gt;a lot of PDFs &amp;amp; reports&lt;/strong&gt;, Kendra &lt;strong&gt;automates searching &amp;amp; organizing&lt;/strong&gt;!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;9. Amazon Comprehend - AI-Powered Text Analysis&lt;/h2&gt;
&lt;p&gt;💡 &lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Amazon Comprehend &lt;strong&gt;reads and understands text like a human&lt;/strong&gt;, detecting emotions, key topics, and relationships between words.&lt;/p&gt;
&lt;p&gt;📌 &lt;strong&gt;Where is it used in real life?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Customer sentiment analysis&lt;/strong&gt; - understand what users feel about a product.&lt;br /&gt;
✅ &lt;strong&gt;Social media monitoring&lt;/strong&gt; - track trends &amp;amp; user reactions.&lt;/p&gt;
&lt;p&gt;💡 &lt;strong&gt;IT Girl Tip:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Perfect if you work with &lt;strong&gt;customer reviews, social media comments, or support tickets&lt;/strong&gt;! 🚀&lt;/p&gt;
&lt;p&gt;💖 &lt;strong&gt;That&apos;s it!&lt;/strong&gt; Now you know &lt;strong&gt;everything about AWS AI/ML&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;💕 Which service are you most excited to try? 🤩💻&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>AI &amp; MLOps</category><category>AWS</category><category>AI</category><category>ML</category><category>Cloud Computing</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Mastering archive_file in Terraform Like a Pro</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Learn how to use Terraform&apos;s archive_file to create ZIP &amp; TAR archives for AWS, Kubernetes, and Azure. Get step-by-step guides and troubleshooting tips!</description><pubDate>Thu, 27 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey friends! 💅 If you&apos;re as obsessed with Terraform as I am (because who doesn&apos;t love automating infrastructure the chic way?!), then you NEED to know about the &lt;code&gt;archive_file&lt;/code&gt; data source. It&apos;s basically your bestie for packaging files into ZIP or TAR formats, making deployments effortless. No more manual zipping—Terraform does it for you. 😍&lt;/p&gt;
&lt;p&gt;Today, I&apos;m breaking down everything you need to know about &lt;code&gt;archive_file&lt;/code&gt;, how to create archives from single or multiple files, and troubleshooting tips because we all know tech can be a little moody sometimes. 🙄&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What is &lt;code&gt;archive_file&lt;/code&gt; in Terraform?&lt;/h2&gt;
&lt;p&gt;Think of &lt;code&gt;archive_file&lt;/code&gt; as the glam squad for your code—it takes your files and bundles them into neat little ZIP or TAR packages. Super useful for:&lt;/p&gt;
&lt;p&gt;✨ Deploying AWS Lambda functions (which require zipped code!)
✨ Packaging Kubernetes manifests or Helm charts
✨ Bundling files before uploading to S3, Azure Storage, or Google Cloud Storage&lt;/p&gt;
&lt;p&gt;Here&apos;s how you set it up:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;data &quot;archive_file&quot; &quot;example&quot; {
  type        = &quot;zip&quot;              # Options: zip, tar, tgz
  source_dir  = &quot;path/to/source&quot;   # Directory to compress
  output_path = &quot;path/to/output.zip&quot; # Destination of the archive
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or, if you&apos;re working with just one file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;data &quot;archive_file&quot; &quot;example_file&quot; {
  type        = &quot;zip&quot;
  source_file = &quot;path/to/file.txt&quot;
  output_path = &quot;path/to/output.zip&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;💡 &lt;strong&gt;Pro Tip:&lt;/strong&gt; Use &lt;code&gt;source_dir&lt;/code&gt; for entire folders and &lt;code&gt;source_file&lt;/code&gt; for single files—but NOT both in the same block. Terraform&apos;s picky like that. 😉&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Creating an Archive from a Single File&lt;/h2&gt;
&lt;p&gt;Let&apos;s say you need to ZIP up a single file (hello, AWS Lambda deployments!). It&apos;s super simple:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;data &quot;archive_file&quot; &quot;example&quot; {
  type        = &quot;zip&quot;
  source_file = &quot;example.txt&quot;
  output_path = &quot;example.zip&quot;
}

output &quot;archive_checksum&quot; {
  value = data.archive_file.example.output_base64sha256
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This &lt;code&gt;output_base64sha256&lt;/code&gt; is a SHA-256 checksum to make sure your file stays intact. You don&apos;t &lt;em&gt;need&lt;/em&gt; it, but it&apos;s a nice way to keep things in check. ✅&lt;/p&gt;
&lt;h3&gt;Example: Zipping a Python Script for AWS Lambda&lt;/h3&gt;
&lt;p&gt;Say you have &lt;code&gt;lambda_function.py&lt;/code&gt; and need to deploy it to AWS Lambda:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;data &quot;archive_file&quot; &quot;lambda_zip&quot; {
  type        = &quot;zip&quot;
  source_file = &quot;lambda_function.py&quot;
  output_path = &quot;lambda_function.zip&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then use it in your Lambda function:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;resource &quot;aws_lambda_function&quot; &quot;my_lambda&quot; {
  function_name    = &quot;my_lambda_function&quot;
  role             = aws_iam_role.lambda_role.arn
  runtime          = &quot;python3.8&quot;
  handler          = &quot;lambda_function.lambda_handler&quot;

  filename         = data.archive_file.lambda_zip.output_path
  source_code_hash = data.archive_file.lambda_zip.output_base64sha256
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;✨ &lt;strong&gt;Heads up!&lt;/strong&gt; If your function has dependencies, you need to zip the whole folder, not just the script.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Creating Archives from Multiple Files&lt;/h2&gt;
&lt;p&gt;Ugh, I wish Terraform let us specify multiple files directly, but no, it&apos;s a diva. 👀 The workaround? Gather files in a temp folder first:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;resource &quot;terraform_data&quot; &quot;prepare_files&quot; {
  provisioner &quot;local-exec&quot; {
    command = &amp;lt;&amp;lt;EOT
mkdir -p temp_folder
cp ${path.module}/file1.txt temp_folder/
cp ${path.module}/file2.txt temp_folder/
cp ${path.module}/file3.txt temp_folder/
EOT
  }
}

data &quot;archive_file&quot; &quot;multiple_files&quot; {
  type        = &quot;zip&quot;
  source_dir  = &quot;${path.module}/temp_folder&quot;
  output_path = &quot;${path.module}/multiple_files.zip&quot;
  depends_on  = [terraform_data.prepare_files]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you just want to archive an entire directory:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;data &quot;archive_file&quot; &quot;example&quot; {
  type        = &quot;zip&quot;
  source_dir  = &quot;${path.module}/my_folder&quot;
  output_path = &quot;${path.module}/example.zip&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Uploading an Archive to Azure Storage&lt;/h2&gt;
&lt;p&gt;For my Azure girls 💙, here&apos;s how to compress a folder and upload it to an Azure Storage Blob:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;data &quot;archive_file&quot; &quot;app_package&quot; {
  type        = &quot;zip&quot;
  source_dir  = &quot;${path.module}/my_app_folder&quot;
  output_path = &quot;${path.module}/app_package.zip&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, create a storage account and upload it:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;resource &quot;azurerm_storage_blob&quot; &quot;example&quot; {
  name                   = &quot;app_package.zip&quot;
  storage_account_name   = azurerm_storage_account.example.name
  storage_container_name = azurerm_storage_container.example.name
  type                   = &quot;Block&quot;
  source                 = data.archive_file.app_package.output_path

  depends_on = [data.archive_file.app_package]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;Troubleshooting archive_file Issues&lt;/h2&gt;
&lt;p&gt;Terraform acting up? Here&apos;s how to fix common &lt;code&gt;archive_file&lt;/code&gt; headaches:&lt;/p&gt;
&lt;p&gt;1️⃣ &lt;strong&gt;Incorrect Source Path&lt;/strong&gt; → Check your file paths! Use &lt;code&gt;${path.module}&lt;/code&gt; to avoid mistakes.&lt;br /&gt;
2️⃣ &lt;strong&gt;Missing zip Utility&lt;/strong&gt; → Terraform needs &lt;code&gt;zip&lt;/code&gt; installed. Fix it with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linux:&lt;/strong&gt; &lt;code&gt;sudo apt install zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;macOS:&lt;/strong&gt; &lt;code&gt;brew install zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows:&lt;/strong&gt; Ensure &lt;code&gt;zip.exe&lt;/code&gt; is in your PATH.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;3️⃣ &lt;strong&gt;Files Not Updating?&lt;/strong&gt; → Terraform won&apos;t detect changes inside &lt;code&gt;source_dir&lt;/code&gt;. Use &lt;code&gt;filemd5()&lt;/code&gt; like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-hcl&quot;&gt;output &quot;archive_hash&quot; {
  value = filemd5(data.archive_file.example.output_path)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;4️⃣ &lt;strong&gt;Permission Issues&lt;/strong&gt; → If AWS Lambda or Docker throws permission errors, chmod your files before zipping:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;chmod +x my_script.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;5️⃣ &lt;strong&gt;Wrong Paths in Modules&lt;/strong&gt; → Always use &lt;code&gt;${path.module}&lt;/code&gt;, not &lt;code&gt;${path.root}&lt;/code&gt;!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Key Takeaways&lt;/h2&gt;
&lt;p&gt;💖 &lt;code&gt;archive_file&lt;/code&gt; is a Terraform essential for packaging files before deployment.&lt;br /&gt;
💖 Use &lt;code&gt;source_file&lt;/code&gt; for one file and &lt;code&gt;source_dir&lt;/code&gt; for entire folders.&lt;br /&gt;
💖 Troubleshoot common issues with paths, permissions, and missing utilities.&lt;/p&gt;
&lt;p&gt;Terraform is fun (and powerful), so go forth and automate like the IT queen you are! 👩‍💻✨&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>Terraform</category><category>IaC</category><category>Guides</category><category>Automation</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>DevOps for IT Girls - Deploying Like a Queen</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>Master DevOps the IT Girl Way! Learn Docker, Kubernetes, CI/CD &amp; more in this fun, beginner-friendly guide. Automate &amp; deploy like a pro!</description><pubDate>Thu, 09 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey, tech beauties! 💖&lt;/p&gt;
&lt;p&gt;If DevOps sounds like a complicated, dry topic, then &lt;strong&gt;you&apos;ve never had it explained the right way!&lt;/strong&gt; Think of it as the ultimate &lt;strong&gt;self-care routine for your code&lt;/strong&gt;—from writing it, to deploying it, to making sure it always runs smoothly.&lt;/p&gt;
&lt;p&gt;Today, we&apos;re going through &lt;strong&gt;the entire DevOps cycle&lt;/strong&gt; in a way that&apos;s easy, fun, and totally &lt;strong&gt;girl-coded&lt;/strong&gt;—with an example we all understand: &lt;strong&gt;skincare &amp;amp; beauty!&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 1: You Have an Idea—Now What?&lt;/h2&gt;
&lt;p&gt;Let&apos;s say you want to create &lt;strong&gt;a smart skincare recommendation app&lt;/strong&gt;. You enter your skin type, age, and season, and boom—it suggests the perfect skincare routine. Genius, right?&lt;/p&gt;
&lt;p&gt;You open &lt;strong&gt;VS Code&lt;/strong&gt;, spend a few hours coding (we don&apos;t sleep, we debug 🛠️), and &lt;strong&gt;it works!&lt;/strong&gt; 🎉&lt;/p&gt;
&lt;p&gt;But wait… only &lt;em&gt;you&lt;/em&gt; can see it. &lt;strong&gt;How do we make it available to the world?&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 2: Packaging It Up (Docker)&lt;/h2&gt;
&lt;p&gt;Here&apos;s the first &lt;strong&gt;DevOps rule&lt;/strong&gt;: &lt;em&gt;Just because it works on your laptop doesn&apos;t mean it&apos;ll work anywhere else.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Think of your code like &lt;strong&gt;skincare products&lt;/strong&gt;. If you&apos;re traveling, you wouldn&apos;t just throw your creams, serums, and SPF loose into your suitcase, right? &lt;strong&gt;You&apos;d pack them neatly in a travel bag&lt;/strong&gt; to keep everything organized and secure.&lt;/p&gt;
&lt;p&gt;That&apos;s exactly what &lt;strong&gt;Docker&lt;/strong&gt; does for your app:&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Packs your code and all dependencies&lt;/strong&gt; together&lt;br /&gt;
✅ &lt;strong&gt;Ensures it runs the same way&lt;/strong&gt; anywhere—your laptop, a server, or the cloud&lt;br /&gt;
✅ &lt;strong&gt;Eliminates the “but it works on my machine!” excuse&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now, wherever your app goes, it&apos;s ready to glow ✨.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 3: Setting Up the Right Space (Terraform)&lt;/h2&gt;
&lt;p&gt;Okay, now your app is inside its &lt;strong&gt;cute little Docker container&lt;/strong&gt;—but where do you run it? You need &lt;strong&gt;a server&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is where &lt;strong&gt;Terraform&lt;/strong&gt; comes in. If Docker is your &lt;strong&gt;travel bag&lt;/strong&gt;, Terraform is &lt;strong&gt;your perfectly organized vanity shelf&lt;/strong&gt;, making sure everything is set up &lt;strong&gt;just the way you like it&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Terraform helps by:&lt;/p&gt;
&lt;p&gt;✨ &lt;strong&gt;Creating servers automatically&lt;/strong&gt; (no manual clicking in cloud dashboards)&lt;br /&gt;
✨ &lt;strong&gt;Ensuring they always have the right settings&lt;/strong&gt; (memory, CPU, storage)&lt;br /&gt;
✨ &lt;strong&gt;Making it easy to scale when traffic grows&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Instead of setting up a new server manually every time, &lt;strong&gt;Terraform does it for you—perfectly, every time&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 4: Organizing Everything (Ansible)&lt;/h2&gt;
&lt;p&gt;Great, you&apos;ve got a server—but it&apos;s &lt;strong&gt;completely empty&lt;/strong&gt;. No software, no setup, nothing. It&apos;s like getting a &lt;strong&gt;brand-new vanity table&lt;/strong&gt; with no products on it.&lt;/p&gt;
&lt;p&gt;This is where &lt;strong&gt;Ansible&lt;/strong&gt; comes in.&lt;/p&gt;
&lt;p&gt;Imagine you have a &lt;strong&gt;list of must-have skincare products&lt;/strong&gt; (cleanser, moisturizer, SPF, serum). You always arrange them in the same order on your vanity &lt;strong&gt;so everything is easy to find&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;That&apos;s what &lt;strong&gt;Ansible&lt;/strong&gt; does for your server:&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Installs all the software it needs&lt;/strong&gt; (Docker, libraries, tools)&lt;br /&gt;
✅ &lt;strong&gt;Configures everything automatically&lt;/strong&gt;&lt;br /&gt;
✅ &lt;strong&gt;Makes sure every new server is set up exactly the same way&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 5: Automating Updates (CI/CD)&lt;/h2&gt;
&lt;p&gt;You decide to add a new feature: your app &lt;strong&gt;now suggests skincare based on the weather&lt;/strong&gt; (because let&apos;s be real—your routine is different for winter vs. summer!).&lt;/p&gt;
&lt;p&gt;But updating your app &lt;strong&gt;manually&lt;/strong&gt; every time you make a change? &lt;strong&gt;Girl, no.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That&apos;s why we use &lt;strong&gt;CI/CD (Continuous Integration / Continuous Deployment)&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;✅ You &lt;strong&gt;push your new code&lt;/strong&gt; to &lt;strong&gt;GitHub&lt;/strong&gt;&lt;br /&gt;
✅ &lt;strong&gt;CI/CD tools (GitHub Actions, GitLab CI/CD, Jenkins)&lt;/strong&gt; automatically test, build, and deploy it&lt;br /&gt;
✅ Your app updates &lt;strong&gt;without you lifting a finger&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It&apos;s like a &lt;strong&gt;beauty subscription box&lt;/strong&gt;—new products show up at your door every month, without you having to reorder them.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Step 6: Monitoring Performance (Prometheus &amp;amp; Grafana)&lt;/h2&gt;
&lt;p&gt;Your app is live, but how do you &lt;strong&gt;know if it&apos;s running smoothly?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Meet &lt;strong&gt;Prometheus &amp;amp; Grafana&lt;/strong&gt;, your app&apos;s &lt;strong&gt;skincare tracker&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;💖 &lt;strong&gt;Prometheus&lt;/strong&gt; collects data (server health, errors, traffic, performance)&lt;br /&gt;
💖 &lt;strong&gt;Grafana&lt;/strong&gt; turns it into &lt;strong&gt;beautiful dashboards &amp;amp; alerts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Just like tracking your skincare routine helps you know &lt;strong&gt;when to hydrate more or change products&lt;/strong&gt;, monitoring tools &lt;strong&gt;help prevent app crashes before users even notice&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The Full DevOps Cycle—Beauty Edition&lt;/h2&gt;
&lt;p&gt;So, let&apos;s put it all together:&lt;/p&gt;
&lt;p&gt;1️⃣ &lt;strong&gt;Write the code&lt;/strong&gt; 🖥️ &lt;em&gt;(find your perfect skincare routine)&lt;/em&gt;&lt;br /&gt;
2️⃣ &lt;strong&gt;Package it in Docker&lt;/strong&gt; 👜 &lt;em&gt;(store products in a beauty bag for easy travel)&lt;/em&gt;&lt;br /&gt;
3️⃣ &lt;strong&gt;Deploy infrastructure with Terraform&lt;/strong&gt; 📦 &lt;em&gt;(set up a perfectly organized vanity shelf)&lt;/em&gt;&lt;br /&gt;
4️⃣ &lt;strong&gt;Set up servers with Ansible&lt;/strong&gt; 🔧 &lt;em&gt;(arrange your skincare in the right order)&lt;/em&gt;&lt;br /&gt;
5️⃣ &lt;strong&gt;Automate updates with CI/CD&lt;/strong&gt; 🚀 &lt;em&gt;(subscribe to beauty boxes so you always get the latest products)&lt;/em&gt;&lt;br /&gt;
6️⃣ &lt;strong&gt;Monitor everything with Prometheus &amp;amp; Grafana&lt;/strong&gt; 📊 &lt;em&gt;(track your skincare results and adjust as needed)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Now, your app &lt;strong&gt;deploys automatically, scales seamlessly, and never crashes unexpectedly&lt;/strong&gt;. That&apos;s what I call &lt;strong&gt;effortless beauty… and DevOps magic!&lt;/strong&gt; ✨&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Final DevOps Girl Tips&lt;/h2&gt;
&lt;p&gt;📌 &lt;strong&gt;Learn step by step:&lt;/strong&gt; Start with &lt;strong&gt;Docker&lt;/strong&gt;, then move to &lt;strong&gt;CI/CD&lt;/strong&gt;, then &lt;strong&gt;Kubernetes&lt;/strong&gt;. No need to learn everything in one day!&lt;/p&gt;
&lt;p&gt;⚡ &lt;strong&gt;Automate everything:&lt;/strong&gt; The less manual work, the more time for &lt;strong&gt;innovation (or coffee &amp;amp; skincare 💅)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;🔥 &lt;strong&gt;Stay updated:&lt;/strong&gt; DevOps is always evolving—&lt;strong&gt;follow IT girl bloggers, Twitter devs, and tech conferences&lt;/strong&gt; to stay ahead.&lt;/p&gt;
&lt;p&gt;And most importantly, &lt;strong&gt;don&apos;t be afraid!&lt;/strong&gt; DevOps isn&apos;t scary—it&apos;s just &lt;strong&gt;a well-organized self-care routine for your apps.&lt;/strong&gt; 😉&lt;/p&gt;
&lt;p&gt;So go out there and &lt;strong&gt;deploy like a queen&lt;/strong&gt;! 👑💻✨&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>DevOps &amp; Cloud</category><category>DevOps</category><category>GitOps</category><category>Guides</category><category>Automation</category><author>Tatiana Mikhaleva (devops.pink)</author></item><item><title>Top Machine Learning YouTube Courses to Fuel Your Tech Passion</title><link>https://devops.pink/</link><guid isPermaLink="true">https://devops.pink/</guid><description>This guide offers a complete pathway for learners at every stage of their machine learning and deep learning journey, helping you navigate and excel in the evolving world of tech.</description><pubDate>Sun, 05 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hey there, code cuties! 🌟 Today, I&apos;m totally thrilled to share with you all something that&apos;s super close to my heart—your ultimate guide to slaying the tech world with the best Machine Learning and Deep Learning courses you can find on YouTube! 🌟 Whether you&apos;re a total newbie or a seasoned pro looking to spice up your skill set, I&apos;ve curated just the right playlists to keep your tech game on point. Let&apos;s dive into this digital adventure together! ✨&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Foundational Machine Learning Courses&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Starting Strong&lt;/strong&gt;: Kick off your journey with the &lt;a href=&quot;https://www.youtube.com/playlist?list=PL05umP7R6ij35ShKLDqccJSDntugY4FQT&quot;&gt;Introduction to Machine Learning (Tübingen)&lt;/a&gt;. It&apos;s like the beginner&apos;s bible—think regression, classification, and sparking those aha! moments. 🤓&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deep Dive into Data&lt;/strong&gt;: Get cozy with data in &lt;a href=&quot;https://www.youtube.com/playlist?list=PL05umP7R6ij2XCvrRzLokX6EoHWaGA2cC&quot;&gt;Statistical Machine Learning (Tübingen)&lt;/a&gt;. It&apos;s all about unlocking the secrets of algorithms and learning paradigms. 🔍&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Master the Basics&lt;/strong&gt;: With &lt;a href=&quot;https://www.youtube.com/playlist?list=PLzrCXlf6ypbxS5OYOY3EN_0u2fDuIT6Gt&quot;&gt;Machine Learning Lecture (Stefan Harmeling)&lt;/a&gt;, you&apos;ll grasp the essentials from Bayes&apos; rule to Gaussian Processes. Total game-changer! 🌟&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full Spectrum Learning&lt;/strong&gt;: The &lt;a href=&quot;https://www.youtube.com/playlist?list=PLD63A284B7615313A&quot;&gt;Caltech CS156: Learning from Data&lt;/a&gt; course is a gem, covering everything from the basics to support vector machines. Prepare to be amazed! 📚&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hands-On Hero&lt;/strong&gt;: For those who love getting their hands dirty, &lt;a href=&quot;https://www.youtube.com/playlist?list=PL2UML_KCiC0UlY7iCQDSiGDMovaupqc83&quot;&gt;Applied Machine Learning&lt;/a&gt; teaches the nitty-gritty of optimization and regularization. It&apos;s practical magic! ✨&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;Deep Learning Exploration&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Beginner&apos;s Luck&lt;/strong&gt;: Start your deep learning quest with &lt;a href=&quot;https://www.youtube.com/playlist?list=PLtBw6njQRU-rwp5__7C0oIVt26ZgjG9NI&quot;&gt;Introduction to Deep Learning (MIT)&lt;/a&gt;. It&apos;s perfect for babes stepping into the tech scene. 🚀&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Technique Treasure Trove&lt;/strong&gt;: The &lt;a href=&quot;https://www.youtube.com/playlist?list=PL_iWQOsE6TfVmKkQHucjPAoRtIJYt8a5A&quot;&gt;Deep Learning: CS 182&lt;/a&gt; course will have you mastering everything from error analysis to imitation learning. Unlock your potential! 🔑&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nerd Out with Neural&lt;/strong&gt;: Dive deep with &lt;a href=&quot;https://www.youtube.com/playlist?list=PLAqhIrjkxbuWI23v9cThsA9GvCAUhRvKZ&quot;&gt;Neural Networks: Zero to Hero&lt;/a&gt; by Andrej Karpathy. It&apos;s your backstage pass to the neural network show! 🎬&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Creativity Meets AI&lt;/strong&gt;: Explore how AI transforms art in &lt;a href=&quot;https://www.youtube.com/playlist?list=PLCpMvp7ftsnIbNwRnQJbDNRqO6qiN3EyH&quot;&gt;MIT: Deep Learning for Art, Aesthetics, and Creativity&lt;/a&gt;. Perfect for when your inner artist meets your inner coder! 🎨&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unsupervised Learning Adventures&lt;/strong&gt;: Get intrigued by the mysteries of AI with &lt;a href=&quot;https://www.youtube.com/playlist?list=PLwRJQ4m4UJjPiJP3691u-qWwPGVKzSlNP&quot;&gt;Deep Unsupervised Learning&lt;/a&gt;. Discover what lurks behind the data! 🕵️‍♀️&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;Specialized Courses in Machine Learning&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Healing with AI&lt;/strong&gt;: The &lt;a href=&quot;https://www.youtube.com/playlist?list=PLUl4u3cNGP60B0PQXVQyGNdCyCTDU1Q5j&quot;&gt;MIT 6.S897: Machine Learning for Healthcare (2019)&lt;/a&gt; melds ML with medicine. It&apos;s where tech meets tender loving care! 💉&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Graph Gurus&lt;/strong&gt;: For a graph-tastic experience, check out &lt;a href=&quot;https://www.youtube.com/playlist?list=PLoROMvodv4rPLKxIpqhjhPgdQy7imNkDn&quot;&gt;Machine Learning with Graphs (Stanford)&lt;/a&gt;. From PageRank to graph neural networks, it&apos;s a must for data divas! 📈&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Talk the AI Talk&lt;/strong&gt;: Dive into &lt;a href=&quot;https://www.youtube.com/playlist?list=PLoROMvodv4rOSH4v6133s9LFPRHjEmbmJ&quot;&gt;CS224N: Natural Language Processing with Deep Learning&lt;/a&gt; and learn how to teach machines to understand us. Finally, a tech that gets you! 💬&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;Practical and Real-World Applications&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Language Model Love&lt;/strong&gt;: Learn to build with &lt;a href=&quot;https://www.comet.com/site/llm-course/&quot;&gt;LLMOps: Building Real-World Applications With Large Language Models&lt;/a&gt;. Bring your code to life! 🌐&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;From Lab to Fab&lt;/strong&gt;: &lt;a href=&quot;https://www.youtube.com/playlist?list=PL1T8fO7ArWlcWg04OgNiJy91PywMKT2lv&quot;&gt;Full Stack Deep Learning&lt;/a&gt; guides you through everything from model training to real-world deployment. Let&apos;s get those models runway-ready! 💻&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;Exploring Computer Vision and Reinforcement Learning&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;See the Vision&lt;/strong&gt;: Stanford&apos;s &lt;a href=&quot;https://www.youtube.com/playlist?list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv&quot;&gt;CS231N: Convolutional Neural Networks for Visual Recognition&lt;/a&gt; is perfect for spotting trends and techs in visual data. 👁️&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decision Day&lt;/strong&gt;: Unravel the secrets of AI decision-making with &lt;a href=&quot;https://www.youtube.com/playlist?list=PLImtCgowF_ES_JdF_UcM60EXTcGZg67Ua&quot;&gt;Reinforcement Learning (Polytechnique Montreal, Fall 2021)&lt;/a&gt;. It&apos;s all about making smart choices! 🎲&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This lineup is literally your dream guide to becoming a tech queen! Whether you&apos;re just getting started or looking to level up, these courses are your golden tickets to the tech scene. Let&apos;s own this journey together, one algorithm at a time! 💖&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;VERDICT &amp;amp; AESTHETICS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Doctrine:&lt;/strong&gt; Traditional DevRel creates noise. I engineer clarity, proving that deep infrastructure and an unapologetically pink aesthetic belong in the same boardroom. Deploy like a queen. &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;&gt;Study the architecture on YouTube&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Syndicate:&lt;/strong&gt; Stop fighting your deployments alone. Gain access to zero-friction protocols, enterprise subsidies, and the DevOps Army. &lt;strong&gt;&lt;a href=&quot;https://devops.army/&quot;&gt;Enter the Discord Ecosystem&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;div class=&quot;text-center pb-12 mt-20&quot;&amp;gt;
&amp;lt;p class=&quot;text-[0.95rem] tracking-[0.25em] uppercase font-black text-neutral-900 dark:text-white mb-2&quot;&amp;gt;
Tatiana Mikhaleva
&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;text-[0.75rem] tracking-[0.2em] uppercase text-neutral-500 dark:text-neutral-400 mb-10&quot;&amp;gt;
Principal Developer Advocate  ·  Docker Captain  ·  IBM Champion  ·  AWS Community Builder
&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;flex justify-center gap-4 flex-wrap&quot;&amp;gt;
&amp;lt;a
href=&quot;https://devops.army/&quot;
target=&quot;_blank&quot;
rel=&quot;noopener noreferrer&quot;
class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-pink-500 bg-pink-500/5 !text-pink-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] shadow-[0_0_10px_rgba(236,72,153,0.15)]&quot;
style=&quot;text-decoration: none !important; border-bottom-style: solid !important; box-shadow: 0 0 10px rgba(236,72,153,0.15);&quot;
&amp;gt;
Discord: Syndicate
&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;a
  href=&quot;https://www.linkedin.com/in/devopspink/&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  LinkedIn: Boardroom
&amp;lt;/a&amp;gt;

&amp;lt;a
  href=&quot;https://www.youtube.com/channel/UCACxfwW1C8KQY1c6nU98VVw?sub_confirmation=1&quot;
  target=&quot;_blank&quot;
  rel=&quot;noopener noreferrer&quot;
  class=&quot;px-[1.5rem] py-[0.6rem] border !border-solid !border-neutral-300 dark:!border-neutral-700 bg-transparent !text-neutral-500 dark:!text-neutral-500 font-bold uppercase tracking-[0.15em] text-[0.8rem] rounded-[2px] transition-all duration-300 hover:!border-neutral-900 hover:!text-neutral-900 dark:hover:!border-white dark:hover:!text-white&quot;
  style=&quot;text-decoration: none !important; border-bottom-style: solid !important;&quot;
&amp;gt;
  YouTube: Broadcast
&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded><category>AI &amp; MLOps</category><category>ML</category><category>Learning</category><category>YouTube</category><category>Courses</category><author>Tatiana Mikhaleva (devops.pink)</author></item></channel></rss>