<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kubernetes on Danilo Falcão da Silva</title><link>https://falcao.org/tags/kubernetes/</link><description>Recent content in Kubernetes on Danilo Falcão da Silva</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 25 May 2026 14:35:00 -0300</lastBuildDate><atom:link href="https://falcao.org/tags/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title>The Kubernetes Operator's Batman Utility Belt: Day-2 Tools That Actually Earn Their Keep</title><link>https://falcao.org/posts/batman-belt-kubernetes-tools/</link><pubDate>Mon, 25 May 2026 14:35:00 -0300</pubDate><guid>https://falcao.org/posts/batman-belt-kubernetes-tools/</guid><description>&lt;p>&lt;code>kubectl&lt;/code> is the Swiss Army knife. Nobody disputes this. But Swiss
Army knives are terrible at most of the individual jobs they claim to
do, and &lt;code>kubectl&lt;/code> is no different: it can tail logs, but only one pod
at a time. It can switch contexts, but with zero guardrails. It can
describe resources, but in a wall of YAML that buries the thing you
actually care about.&lt;/p>
&lt;p>Day-2 operations — the part where the cluster is live, traffic is
flowing, and someone pages you at 2 a.m. — need sharper instruments.
What follows is the utility belt I&amp;rsquo;d recommend to any Kubernetes
operator building their toolkit in 2026. Not everything here is new.
Some of these tools have been around since 2018. The point is that
they&amp;rsquo;re still maintained, still solve real problems, and still faster
than the &lt;code>kubectl&lt;/code> incantation you&amp;rsquo;d otherwise be typing.&lt;/p></description></item><item><title>Terraform, OpenTofu and Pulumi: Why I Still Run Terraform in 2026</title><link>https://falcao.org/posts/terraform-opentofu-pulumi-2026/</link><pubDate>Thu, 21 May 2026 23:00:00 -0300</pubDate><guid>https://falcao.org/posts/terraform-opentofu-pulumi-2026/</guid><description>&lt;p>Infrastructure as Code stopped being a single-answer question a couple
of years ago. Terraform went &lt;strong>BSL&lt;/strong> in August 2023, &lt;strong>OpenTofu&lt;/strong> forked
under MPL, &lt;strong>Pulumi&lt;/strong> kept arguing that infrastructure should be real
code in real languages, and IBM closed the &lt;strong>$6.4B HashiCorp
acquisition&lt;/strong> in February 2025. Three legitimate tools, three different
bets on who owns the abstraction.&lt;/p>
&lt;p>I still run &lt;strong>Terraform&lt;/strong>. For everything.&lt;/p>
&lt;p>This post is the honest version of why. I&amp;rsquo;ve read the OpenTofu release
notes, watched Pulumi talks, played with both on weekend projects, and
read more migration write-ups than I can remember. I have never put
&lt;strong>OpenTofu&lt;/strong> or &lt;strong>Pulumi&lt;/strong> in front of production traffic. Most of what
follows about those two is research, not muscle memory — and I&amp;rsquo;ll flag
that as I go.&lt;/p></description></item><item><title>The Kubernetes Ingress Landscape in 2026: Nginx Isn't the Center Anymore</title><link>https://falcao.org/posts/kubernetes-ingress-landscape-2026/</link><pubDate>Thu, 21 May 2026 17:50:00 -0300</pubDate><guid>https://falcao.org/posts/kubernetes-ingress-landscape-2026/</guid><description>&lt;p>For about a decade, &amp;ldquo;Kubernetes ingress&amp;rdquo; effectively meant one thing:
&lt;strong>&lt;code>ingress-nginx&lt;/code>&lt;/strong>, the community-maintained controller that wrapped
the Nginx engine behind the Kubernetes &lt;code>Ingress&lt;/code> resource. It was
fine. It was the default everyone reached for. It was also,
quietly, the wrong long-term shape for the problem.&lt;/p>
&lt;p>That era ended in 2026. The community &lt;code>ingress-nginx&lt;/code> project
&lt;strong>reached end-of-life in March 2026&lt;/strong>. The &lt;strong>Kubernetes Gateway
API&lt;/strong>, which graduated to GA on the v1.2 line, is now the
forward-looking standard. &lt;strong>Envoy Gateway&lt;/strong> is the CNCF reference
implementation. &lt;strong>Cilium&lt;/strong> does L7 routing in eBPF without a
sidecar or an extra proxy. &lt;strong>RKE2&lt;/strong> flipped to &lt;strong>Traefik&lt;/strong> by
default in v1.36 and removes &lt;code>ingress-nginx&lt;/code> entirely in v1.37.&lt;/p></description></item><item><title>Where to Hide Kubernetes Secrets: AWS, Azure, GCP, and On-Prem Compared</title><link>https://falcao.org/posts/kubernetes-secrets-aws-azure-gcp-onprem/</link><pubDate>Wed, 20 May 2026 22:25:00 -0300</pubDate><guid>https://falcao.org/posts/kubernetes-secrets-aws-azure-gcp-onprem/</guid><description>&lt;p>The Kubernetes &lt;code>Secret&lt;/code> object is a YAML manifest with a base64-encoded
value in it. That&amp;rsquo;s the entire encryption story. Anyone with &lt;code>get&lt;/code>
permission on the namespace can read every credential the workload
holds. &lt;strong>Base64 is not encryption.&lt;/strong> It is barely obfuscation.&lt;/p>
&lt;p>Teams discover this the wrong way — usually during a security
review, occasionally during an incident — and the next question is
always the same: &lt;em>so where do the real secrets live?&lt;/em>&lt;/p></description></item><item><title>Rancher vs Lens: A Platform and a Dashboard, Not the Same Thing</title><link>https://falcao.org/posts/rancher-platform-vs-lens/</link><pubDate>Wed, 20 May 2026 21:15:00 -0300</pubDate><guid>https://falcao.org/posts/rancher-platform-vs-lens/</guid><description>&lt;p>You&amp;rsquo;ll see this comparison on r/kubernetes every couple of months,
phrased as if it&amp;rsquo;s a real choice: &lt;strong>Rancher or Lens?&lt;/strong> The framing is
wrong. They occupy different layers of the stack. Asking which one
&amp;ldquo;wins&amp;rdquo; is like asking whether VS Code beats Kubernetes.&lt;/p>
&lt;p>But the question keeps coming up — usually from someone who has Lens
installed, has heard about Rancher, and is trying to figure out
whether they should swap. So let me lay out what each one actually
is, where they overlap, where they don&amp;rsquo;t, and which one earns a place
in a serious on-prem setup.&lt;/p></description></item><item><title>eBPF Is Eating Kubernetes' iptables Plumbing</title><link>https://falcao.org/posts/ebpf-eating-kubernetes-iptables/</link><pubDate>Wed, 20 May 2026 19:30:00 -0300</pubDate><guid>https://falcao.org/posts/ebpf-eating-kubernetes-iptables/</guid><description>&lt;p>For most of Kubernetes&amp;rsquo; life, the cluster data path has been a tower of
&lt;strong>iptables&lt;/strong> rules. Pod-to-service routing, NAT, network policy, even
the way &lt;code>kube-proxy&lt;/code> programs a Service IP — all of it expressed as
netfilter chains evaluated linearly on every packet. It worked. It
also aged badly.&lt;/p>
&lt;p>In 2026, the answer the ecosystem has converged on is &lt;strong>eBPF&lt;/strong>, and the
project doing most of the convergence is &lt;strong>Cilium&lt;/strong>. The shift is
no longer aspirational: kube-proxy itself shipped an &lt;strong>nftables mode&lt;/strong>
that is expected to go &lt;strong>GA in Kubernetes 1.33&lt;/strong>, the old &lt;strong>IPVS
backend is deprecated as of v1.35&lt;/strong>, and the major managed Kubernetes
providers (EKS, GKE, AKS) all offer a Cilium-powered data plane as a
first-class option. Azure CNI Powered by Cilium is GA on K8s 1.33.&lt;/p></description></item><item><title>Caddy, Nginx, Traefik: Picking a Reverse Proxy in 2026</title><link>https://falcao.org/posts/caddy-nginx-traefik-2026/</link><pubDate>Wed, 20 May 2026 17:35:00 -0300</pubDate><guid>https://falcao.org/posts/caddy-nginx-traefik-2026/</guid><description>&lt;p>There is a kind of infrastructure question that never really gets
settled, just re-litigated every couple of years as the surrounding
ecosystem moves. &lt;strong>&amp;ldquo;Which reverse proxy?&amp;rdquo;&lt;/strong> is one of those questions.&lt;/p>
&lt;p>The shortlist hasn&amp;rsquo;t changed much: &lt;strong>Caddy&lt;/strong>, &lt;strong>Nginx&lt;/strong>, &lt;strong>Traefik&lt;/strong>.
The context around them has changed a lot. The community &lt;code>ingress-nginx&lt;/code>
project reached end-of-life in &lt;strong>March 2026&lt;/strong>. &lt;strong>RKE2 v1.36&lt;/strong> flipped
to &lt;strong>Traefik&lt;/strong> as the default ingress. Caddy quietly shipped &lt;strong>2.11&lt;/strong>
with better health-checking and ECH rotation. Nginx is on &lt;strong>1.31
mainline / 1.30.1 stable&lt;/strong> and treats HTTP/3 as a first-class but
still-evolving feature.&lt;/p></description></item><item><title>GitOps with Argo CD: The Reconciliation Loop That Survives 3 a.m.</title><link>https://falcao.org/posts/gitops-argocd/</link><pubDate>Tue, 19 May 2026 13:30:00 -0300</pubDate><guid>https://falcao.org/posts/gitops-argocd/</guid><description>&lt;p>Here&amp;rsquo;s the test I use for any deployment tooling:&lt;/p>
&lt;p>&lt;strong>It is 3 a.m. on a Sunday. PagerDuty just woke you up. A production
service is degraded. You roll out of bed, open your laptop, and have
to figure out what the cluster &lt;em>thinks&lt;/em> is true, what&amp;rsquo;s &lt;em>actually&lt;/em>
true, and what changed in the last twelve hours. The faster you can
answer those three questions, the better the tooling.&lt;/strong>&lt;/p>
&lt;p>The right GitOps stack collapses all three questions into one
dashboard. The wrong one has you SSH-hopping between five servers
running &lt;code>kubectl rollout history&lt;/code> against unlabeled deployments. I&amp;rsquo;ve
done both. I&amp;rsquo;m writing this post about the former.&lt;/p></description></item><item><title>Helm 4 Made Me Stop Looking for an Alternative</title><link>https://falcao.org/posts/helm-4/</link><pubDate>Tue, 19 May 2026 13:00:00 -0300</pubDate><guid>https://falcao.org/posts/helm-4/</guid><description>&lt;p>Helm has been the punchline of Kubernetes packaging for about as long
as Kubernetes has been called Kubernetes. Helm 2 had &lt;strong>Tiller&lt;/strong>, an
in-cluster component running as cluster-admin that read every chart&amp;rsquo;s
YAML and applied it from inside the cluster — a security horror show
that drove half the community to invent its own deployment tooling
just to avoid it. Helm 3 finally killed Tiller in 2019 and went
client-side, which fixed the worst of it. And then Helm 3 sat there,
relatively unchanged, for &lt;strong>six years&lt;/strong>.&lt;/p></description></item><item><title>RKE2 Deserves Some Love: Why It's My On-Prem Kubernetes Pick</title><link>https://falcao.org/posts/rke2-on-prem-kubernetes/</link><pubDate>Tue, 19 May 2026 12:30:00 -0300</pubDate><guid>https://falcao.org/posts/rke2-on-prem-kubernetes/</guid><description>&lt;p>Most of the Kubernetes conversation in 2026 happens around managed
services — &lt;strong>EKS&lt;/strong>, &lt;strong>GKE&lt;/strong>, &lt;strong>AKS&lt;/strong> — and most of the rest happens
around &lt;strong>K3s&lt;/strong> for edge and homelab. Somewhere in the middle, on the
hardware that lives in a rack in a datacenter you can drive to,
there&amp;rsquo;s a Kubernetes story that nobody talks about loudly enough.&lt;/p>
&lt;p>That story is &lt;strong>RKE2&lt;/strong> — the Rancher Kubernetes Engine 2, SUSE&amp;rsquo;s
hardened, security-focused, single-binary distribution designed for
on-premises production. I&amp;rsquo;ve been running it for two years across
two different employers and one home lab, and it&amp;rsquo;s the rare piece of
infrastructure that gets more impressive the longer you live with it.&lt;/p></description></item></channel></rss>