<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nicoleta Mocanu</title>
    <description>The latest articles on DEV Community by Nicoleta Mocanu (@nicoleta_mocanu_71e5fe43f).</description>
    <link>https://dev.to/nicoleta_mocanu_71e5fe43f</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2883474%2Ffd1cde56-b69f-4711-b9a2-908ee864c552.PNG</url>
      <title>DEV Community: Nicoleta Mocanu</title>
      <link>https://dev.to/nicoleta_mocanu_71e5fe43f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nicoleta_mocanu_71e5fe43f"/>
    <language>en</language>
    <item>
      <title>KuberneTEAS: Enterprise-Grade Tea Orchestration for the Post-Coffee Era ☕</title>
      <dc:creator>Nicoleta Mocanu</dc:creator>
      <pubDate>Thu, 02 Apr 2026 19:56:43 +0000</pubDate>
      <link>https://dev.to/nicoleta_mocanu_71e5fe43f/kuberneteas-enterprise-grade-tea-orchestration-for-the-post-coffee-era-3obn</link>
      <guid>https://dev.to/nicoleta_mocanu_71e5fe43f/kuberneteas-enterprise-grade-tea-orchestration-for-the-post-coffee-era-3obn</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aprilfools-2026"&gt;DEV April Fools Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I'm a Site Reliability Engineer by day.&lt;/p&gt;

&lt;p&gt;I've spent years staring at Kubernetes dashboards, triaging SEV-1 incidents at 2:00 am, writing postmortems nobody reads, and watching Prometheus metrics spike in ways that should not be physically possible.&lt;/p&gt;

&lt;p&gt;So when this challenge dropped, I built the most production-grade, over-engineered, completely useless thing my brain could produce in one hyperfocus sprint.&lt;/p&gt;

&lt;p&gt;I was tired of high-availability databases. I wanted high-availability &lt;strong&gt;Oolong&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://kuberneteas-dashboard-1095912267557.us-west1.run.app/" rel="noopener noreferrer"&gt;KuberneTEAS&lt;/a&gt;&lt;/strong&gt; is a cloud-native orchestration layer for the common teapot. It brings the full stress of a SEV-1 production outage to the simple act of steeping a tea bag.&lt;/p&gt;

&lt;p&gt;Because if your teapot isn't containerized, are you even an engineer?&lt;/p&gt;

&lt;p&gt;The live log firehose tells it all:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;[18:42:50] [DEBUG] Garbage collection: Removing spent tea leaves from memory.
[18:42:53] [INFO]  Prom-TEA-us: Scraping metrics from kettle-exporter.
[18:42:29] [INFO]  Liveness probe failed: Water temperature too low (85°C).
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And if you try to brew coffee? You get HTTP 418. Obviously.&lt;/p&gt;

&lt;p&gt;Here's what's running in production:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prom-TEA-us&lt;/strong&gt; — Real-time graphs for &lt;code&gt;earl_grey&lt;/code&gt;, &lt;code&gt;chamomile&lt;/code&gt;, and &lt;code&gt;oolong&lt;/code&gt; saturation. Alerts tab includes &lt;code&gt;TeaIsCold&lt;/code&gt; and &lt;code&gt;TooMuchSugar&lt;/code&gt;. Has a Prom-TEA-QL cheat sheet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pod Topology&lt;/strong&gt; — Visualize tea leaves across the cluster. Beware the &lt;code&gt;coffee-smell&lt;/code&gt; node taint. Pods cycle through &lt;code&gt;Steeping&lt;/code&gt;, &lt;code&gt;Running&lt;/code&gt;, and &lt;code&gt;CrashLoopBackOff&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aroma-Mesh Control Plane&lt;/strong&gt; — mTLS (Mutual Tea Leaf Security, ENFORCED). Traffic splitting between Earl Grey and English Breakfast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kettle Shell (K-SH)&lt;/strong&gt; — A retro terminal where every single command returns &lt;code&gt;HTTP 418&lt;/code&gt;. You cannot schedule coffee pods. You will never schedule coffee pods.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Water Ingress Controller&lt;/strong&gt; — Blocks all &lt;code&gt;coffee.pot&lt;/code&gt; traffic to the &lt;code&gt;null-sink&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Heat Operators&lt;/strong&gt; — Thermal reconciliation targeting 98.5°C. Verifies "Water Presence" AND "Coffee Absence" before boiling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aroma Sidecar Injector&lt;/strong&gt; — Honey sidecars in &lt;code&gt;CrashLoopBackOff&lt;/code&gt; due to glucose crystallization. Known issue. &lt;code&gt;WONTFIX&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runbook SOP-418&lt;/strong&gt; — Triage guide for Cold-Tea-Syndrome. Nuclear option: re-provision the kitchen namespace and go to the pub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And of course, the active incident:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ SEV-1 INCIDENT ACTIVE&lt;/strong&gt;&lt;br&gt;
Earl Grey pod &lt;code&gt;eg-node-03f4&lt;/code&gt; has gone cold.&lt;br&gt;
MTTR (Mean Time to Reboil): Calculating...&lt;br&gt;
Incident Commander: &lt;code&gt;kettle-operator-6f8d&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is fine. Everything is fine.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;strong&gt;&lt;a href="https://kuberneteas-dashboard-1095912267557.us-west1.run.app/" rel="noopener noreferrer"&gt;Live Dashboard on Google Cloud Run&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Navigate to the Kettle Shell and try to &lt;code&gt;schedule coffee pods&lt;/code&gt;. I will not spoil what happens.&lt;/p&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;🐙 &lt;strong&gt;&lt;a href="https://github.com/nmo-genio/kuberneteas_devaprilfools" rel="noopener noreferrer"&gt;GitHub — nmo-genio/kuberneteas_devaprilfools&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React 18 + Vite + TypeScript&lt;/li&gt;
&lt;li&gt;Tailwind CSS (dark theme, obviously)&lt;/li&gt;
&lt;li&gt;Framer Motion for animations&lt;/li&gt;
&lt;li&gt;Recharts for fake-but-convincing metric graphs&lt;/li&gt;
&lt;li&gt;Gemini API (&lt;code&gt;@google/genai&lt;/code&gt;) for AI Root Cause Analysis&lt;/li&gt;
&lt;li&gt;Deployed on &lt;strong&gt;Google Cloud Run&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 418 handler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;418&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I'm a teapot.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;suggestion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Have you considered Earl Grey?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;docs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.rfc-editor.org/rfc/rfc2324&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;WILL_NOT_FIX&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Easter eggs worth finding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scaling tea replicas triggers a boiling sound effect and a CSS steam blur filter&lt;/li&gt;
&lt;li&gt;Hover over Chai Pods to find the hidden &lt;code&gt;coffee-smell&lt;/code&gt; taint&lt;/li&gt;
&lt;li&gt;Watch the Honey-Injector sidecar logs carefully&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The project was scaffolded from the &lt;strong&gt;Google AI Studio repository template&lt;/strong&gt;, which made the Gemini integration fast to wire up.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Gemini API&lt;/strong&gt; powers the AI Root Cause Analysis panel. System prompt: behave as a senior SRE who exclusively manages distributed tea infrastructure and has never once encountered a coffee-related workload.&lt;/p&gt;

&lt;p&gt;It is extremely committed to the bit. Actual output:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The investigation identified a multi-vector failure. The sucrose state remained in a quantum superposition of 'dissolved' and 'solid' until the moment of observation (the first sip), at which point the wave function collapsed into a localized sludge at the bottom of the ceramic container. Recommended action: migrate to deterministic liquid honey to avoid future quantum entanglement events. Consider circuit-breaking the biscuit dependency."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The live metrics use Recharts with randomized data streams — realistic enough to look like actual telemetry, useless enough to mean absolutely nothing. The log firehose auto-scrolls with timestamped entries on a timer. Every log line is technically correct infrastructure language applied entirely to the wrong subject matter.&lt;/p&gt;

&lt;p&gt;The whole thing runs on &lt;strong&gt;Google Cloud Run&lt;/strong&gt;. HTCPCP/1.1 deserves production-grade infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best Ode to Larry Masinter&lt;/strong&gt; + &lt;strong&gt;Best Google AI Usage&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Ode to Larry Masinter
&lt;/h3&gt;

&lt;p&gt;In 1998, Larry Masinter co-authored &lt;a href="https://www.rfc-editor.org/rfc/rfc2324" rel="noopener noreferrer"&gt;RFC 2324&lt;/a&gt; — the Hyper Text Coffee Pot Control Protocol. It defined HTTP status code &lt;code&gt;418 I'm a Teapot&lt;/code&gt; as the correct response when a teapot is asked to brew coffee.&lt;/p&gt;

&lt;p&gt;It was a joke. The internet kept it anyway.&lt;/p&gt;

&lt;p&gt;Every &lt;code&gt;418&lt;/code&gt; in KuberneTEAS is a direct tribute to that RFC. The Kettle Shell returns nothing but 418s. The Water Ingress blocks all coffee traffic. The Heat Operators verify Coffee Absence before proceeding. The nodes are tainted for tea-only workloads. The entire architecture exists to enforce one principle: a teapot is a teapot. It will not brew your coffee. It will tell you this politely, with a proper status code and a JSON body.&lt;/p&gt;

&lt;p&gt;Thank you, Larry. You built a joke that outlived most production systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Google AI Usage
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Gemini&lt;/strong&gt; is embedded in the AI Root Cause Analysis engine. When a tea incident fires, the system calls the Gemini API with full incident context — pod name, metric readings, log tail — and returns a deeply unhinged postmortem from an AI that has never heard of coffee and does not want to.&lt;/p&gt;

&lt;p&gt;The project was also scaffolded using the &lt;strong&gt;Google AI Studio repository template&lt;/strong&gt; and deployed on &lt;strong&gt;Google Cloud Run&lt;/strong&gt;. Google AI is load-bearing infrastructure in a dashboard that monitors tea.&lt;/p&gt;

&lt;p&gt;That felt right.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built by Nicoleta Mocanu (&lt;a href="https://github.com/nmo-genio" rel="noopener noreferrer"&gt;@nmo-genio&lt;/a&gt;) in one hyperfocus sprint.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;My SRE colleagues have not been informed. I will not be taking questions.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>418challenge</category>
      <category>showdev</category>
      <category>kubernetes</category>
    </item>
  </channel>
</rss>
