AZURE · KUBERNETES
Azure Thoughts
Azure Thoughts
Hey you, running Kubernetes in the cloud, can you hear me? Hey you, paying for idle clusters, drowning in YAML and upgrades, can you feel me?
AKS is not a silver bullet. It’s not a sign of DevOps maturity. This isn’t just AKS - the same lessons apply to any cloud Kubernetes, like EKS or GKE.
For many product teams it’s an accidental complexity.
What I still see far too often:
- Running a handful of stateless APIs
- Frontend applications running in pods
- Simple background jobs deployed as long-running containers
- No real Kubernetes-native requirements
- Clusters running mostly idle, because “just in case”
This brings to:
- High cognitive load - teams juggle YAML, Helm, ingress, upgrades, and networking
- Slower delivery - platform changes block product deployments
- Operational fragility - a single cluster-level mistake can take down multiple services
- Hidden cost - idle nodes, ongoing upgrades, and teams become accidental platform operators
- Ownership confusion - product teams end up running a platform that didn’t need
If your workload is:
- HTTP APIs and CRUD services
- Frontend applications and static content
- Scheduled jobs or simple background workers
- Event-driven processing
- Internal tools with limited scale
- Predictable or bursty traffic patterns
Then you are likely over-engineering.
Benefits of leaving Kubernetes:
- Faster delivery - teams ship features, not platform upgrades and api deprecation fixes
- Lower operation burden - no clusters, no node pools or ingress to manage
- Lower cost - avoid idle compute and cluster overhead, pay only only for what you need
- Higher reliability - less infrastructure overhead means more stable applications
- Clear ownership - teams own apps, not orchestration
Pragmatic alternatives:
- Azure Container Apps - containers without platform management
- Azure App Service - reliable, predictable, highly operable
- Azure Static Web Apps - frontends should almost never run on AKS
- Azure Functions - event-driven, scale-to-zero workloads
Architecture maturity is more than “We run Kubernetes”. It’s knowing what to run and when.
PS: Bonus points if in you comment you say from which song the intro was inspired.
using IMBELCHEV.Web.Models;
namespace IMBELCHEV.Web.Services;
public class ArticleIndexService
{
private readonly string _articlesPath;
private List<ArticleIndexItem> _articles = [];
public IReadOnlyList<ArticleIndexItem> Articles => _articles;
public ArticleIndexService(IWebHostEnvironment env)
{
_articlesPath = Path.Combine(env.ContentRootPath, "Content", "Articles");
Reload();
}
public ArticleIndexItem? FindBySlug(string slug)
=> _articles.FirstOrDefault(a => a.Slug == slug);
public void Reload()
{
var items = new List<ArticleIndexItem>();
foreach (var file in Directory.EnumerateFiles(_articlesPath, "*.md"))
{
var lines = File.ReadAllLines(file);
var meta = new Dictionary<string, string>();
for (int i = 1; i < lines.Length; i++)
{
if (lines[i] == "---") break;
var parts = lines[i].Split(':', 2);
meta[parts[0].Trim()] = parts[1].Trim();
}
items.Add(new ArticleIndexItem(
meta["title"],
meta["slug"],
DateTime.Parse(meta["date"]),
meta["summary"],
file
));
}
_articles = items
.OrderByDescending(a => a.Date)
.ToList();
}
}