<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Vasilios Syrakis - kubernetes</title>
    <subtitle>A simple blog made with Zola and Duckquill</subtitle>
    <link rel="self" type="application/atom+xml" href="https://cetanu.github.io/tags/kubernetes/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://cetanu.github.io"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-06-30T00:00:00+00:00</updated>
    <id>https://cetanu.github.io/tags/kubernetes/atom.xml</id>
    <entry xml:lang="en">
        <title>For 12 years, I ignored Kubernetes</title>
        <published>2026-06-30T00:00:00+00:00</published>
        <updated>2026-06-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Vasilios Syrakis
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://cetanu.github.io/blog/i-ignored-kubernetes-for-12-years/"/>
        <id>https://cetanu.github.io/blog/i-ignored-kubernetes-for-12-years/</id>
        
        <content type="html" xml:base="https://cetanu.github.io/blog/i-ignored-kubernetes-for-12-years/">&lt;h1 id=&quot;my-introduction-to-kubernetes&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#my-introduction-to-kubernetes&quot; aria-label=&quot;Anchor link for: my-introduction-to-kubernetes&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
My introduction to Kubernetes&lt;&#x2F;h1&gt;
&lt;p&gt;Like many people I heard about kubernetes because it was software from Google
that people were hyped about. I understood a little bit about it - it’s a
container orchestrator, right?&lt;&#x2F;p&gt;
&lt;p&gt;I also heard about painful experiences that people had with it and I got this
impression that it was way too complicated for what it provided in most cases.&lt;&#x2F;p&gt;
&lt;p&gt;We’ve all heard the meme “I deployed my blog on kubernetes” as a classic
example of overengineering, and resume driven development when a team sets up
kubernetes for a single application.&lt;&#x2F;p&gt;
&lt;p&gt;While working in the industry, I was happy to let other people deal with this
perceived complexity. I was willing to let them work out all the problems and
figure out how to offer kubernetes to me as an end-user.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;post-layoff&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#post-layoff&quot; aria-label=&quot;Anchor link for: post-layoff&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
Post-layoff&lt;&#x2F;h1&gt;
&lt;p&gt;However, as time went on, it seemed that the entire industry made a decision to
adopt kubernetes, even if the overheads and complexity were of some cost,
because the cost was outweighed by standardisation.&lt;&#x2F;p&gt;
&lt;p&gt;Suddenly, every SRE &#x2F; platform engineer role seemed to require knowledge of
kubernetes. It was never too clear how much knowledge or skill was required,
and there have been several interviews in which I’ve expressed that I don’t
have any experience operating kubernetes (probably a bad thing to say in an
interview) and yet interviewers did not seem to be able to give me a picture of
how they use kubernetes and what I would need to know in order to sufficiently
operate their clusters&#x2F;infrastructure.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;start-of-the-learning-journey&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#start-of-the-learning-journey&quot; aria-label=&quot;Anchor link for: start-of-the-learning-journey&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
Start of the learning journey&lt;&#x2F;h1&gt;
&lt;p&gt;So after being laid off in March 2026, it became apparent that learning
kubernetes would be a good idea. Later in May, when my video went viral and an
audience appeared with the desire to learn new things, particularly by being
taught by myself, it made even more sense to learn kubernetes because it would
give me the opportunity to both learn and teach at the same time.&lt;&#x2F;p&gt;
&lt;p&gt;So I embarked on a journey to learn kubernetes with the least amount of
patience possible, pressuring myself to learn it in a week. Over 7
live-streams, approximately 2-3 hours each, I gathered a decent picture of the
kubernetes landscape, a bit of history, and what tools people use to deploy and
manage kubernetes in modern times.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#&quot; aria-label=&quot;Anchor link for: &quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The very first thing I did was started streaming on Twitch, with the stream
title “Added Kubernetes to my CV, now I have to learn it” and opened a browser,
went to the kubernetes website and started reading docs linearly. After going
through various concepts and basically trying to memorize them and failing, a
few chatters informed me of Kelsey Hightower’s guide “Learning Kubernetes The
Hard Way”.&lt;&#x2F;p&gt;
&lt;p&gt;I started going through this tutorial, and found that it required at
least 3 machines with 2GB of memory each, and I didn’t have that hardware
laying around, and I didn’t want to run them on my stream PC. So I signed up to
AWS and started to create EC2 instances manually, and SSHing onto them to set
up hostnames and run OpenSSL commands to do PKI.&lt;&#x2F;p&gt;
&lt;p&gt;At some point the tutorial was telling me to execute blobs of shell scripts and
I became enraged at the suggestion because it’s been two decades since the
advent of configuration management, and at least a decade since kubernetes has
been released. So I thought that all this friction had already been smoothed out.&lt;&#x2F;p&gt;
&lt;p&gt;In hindsight, the entire purpose of Kelsey’s guide is to expose someone to
these low-level concerns. However, I am personally more in favor of getting
something practical up and running quickly, and dealing with problems as they
arise.&lt;&#x2F;p&gt;
&lt;p&gt;So I started an argument with Gemini about Kelsey’s guide, and it graciously
agreed that no sane engineer would set up kubernetes by following that guide in
a profession scenario. It led me to discover &lt;code&gt;kubeadm&lt;&#x2F;code&gt; which gave me a way to
bootstrap the cluster nodes in one command.&lt;&#x2F;p&gt;
&lt;p&gt;I used this newly found tool to then set all the infrastructure up with
Cloudformation, running the tool during the init of the EC2 instances via
UserData. I successfully got a cluster running and then tried to use Helm to
install “charts” to get a valheim server pod running.&lt;&#x2F;p&gt;
&lt;p&gt;Using helm got a bit messy, and a bunch of pods were crashing, and to be honest
I had no idea why. My hypothesis at the time was that the process of pushing
YAML to kube via helm and kubectl was fragile and that it was running into
issues with state becoming corrupted or partially deployed.&lt;&#x2F;p&gt;
&lt;p&gt;Finding myself frustrated, I took a break to think about what my next approach would be.&lt;&#x2F;p&gt;
&lt;p&gt;I had a friend tell me about his setup where he doesn’t run any helm
commands against the cluster, but instead uses it to produce kubeconfigs as
build artifacts which are then ingested via GitOps.&lt;&#x2F;p&gt;
&lt;p&gt;I also started to remember a recommendation to use Talos Linux from another
peer so I decided to see what that was about. It sold this idea of an immutable
kubernetes cluster which supposedly would prevent the kind of state corruption
that I thought I was running into.&lt;&#x2F;p&gt;
&lt;p&gt;At this stage I decided to completely pivot, use Talos Linux, and switch to
Pulumi instead of Cloudformation for the infrastructure even though it would
cost me some time in the learning process.&lt;&#x2F;p&gt;
&lt;p&gt;I quite enjoyed Pulumi; it feels like a type-checked infrastructure, which is
cool. I used the golang SDK.&lt;&#x2F;p&gt;
&lt;p&gt;After a bunch of troubleshooting and looking at logs of pods, and feeding those
logs into Gemini, I discovered that there was a bootstrap dependency issue
where other pods like Argo required that AWS CCM was setup before it would work
properly.&lt;&#x2F;p&gt;
&lt;p&gt;After this, it was pretty smooth sailing. I could add CRDs and charts to my
gitrepo and argo would pick them up and provision pods quickly. I started to
thinkabout how to platformatize everything that I’d built but I realised that
thiscan become quite subjective, and so for this article I won’t go into that
atall, but the options that I was aware of were tools like KubeVela,
Crossplane,and Backstage.&lt;&#x2F;p&gt;
&lt;blockquote class=&quot;warning&quot;&gt;
	&lt;p class=&quot;alert-title&quot;&gt;
		&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;Warning&lt;&#x2F;p&gt;
	&lt;p&gt;Still writing this up&lt;&#x2F;p&gt;

&lt;&#x2F;blockquote&gt;
&lt;iframe
	class=&quot;youtube-embed&quot;
	src=&quot;https:&#x2F;&#x2F;www.youtube-nocookie.com&#x2F;embed&#x2F;V8iT_2YHtns&quot;
	allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot;
	referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;
&lt;&#x2F;iframe&gt;
&lt;!--

&lt; here is where I boil the entire article to its essence &gt;

Two paths:

## Managed-k8s

* No-brainer
* Good for small scale
* EKS - Locked into AWS Bottlerocket
* GKE - ???
* AKS - ???

## Run-Your-Own-Cluster

* Don&#x27;t want vendor lock-in
* Strong need for multi-cloud, especially mixed with baremetal
* 

---

# notes


* looked up docs on kubernetes.org

* kubernetes the hard way
- manually provisioning kube nodes with AWS
- hated it, wanted something more polished
- started asking LLMs about better ways

* discovered kubeadm
- started using cloudformation to provision the nodes
- created token on the control-plane via userdata script
- uploaded the token to AWS ParameterStore
- worker nodes pulled the token and joined cluster
- tried using Helm to provision pods and such

* discovered Talos linux
- Replaced the EC2s (Ubuntu) with Talos
- Rewrote the Cloudformation into Pulumi
- Used a Pulumi library to do the Talos bootstrapping
- Looots of troubleshooting
- Found that AWS CCM was a dependency of Argo
- Fixed the bootstrap, Argo working
- Started deploying pods
- Logged into Valheim game server as a test
- Made a cats server

* Started thinking about how to really platformatize kube
- found KubeVela
- learnt about the OAM (Open Application Model)
- refactored existing pods into OAM apps
- we are now here







---


Of course, it&#x27;s obvious that people do this usually as an exercise to learn
kubernetes in whatever way they can, as did I with my recent adventure to
deploy a single valheim server.



At a kubernetes interview they may ask you about Operators and CRDs. Also there
is a question like &quot;What exactly happens when you run kubectl apply -f
deployment.yaml&quot;?

kubestronaut


short: what is the best piece of advice you&#x27;ve ever gotten?

video: recent experience with interviews
* coding portion
    - fundamental knowledge of DSA
    - methodical approach:
        * making a naive version first
        * addressing edge cases
        * optimizing performance
        * awareness of time&#x2F;space complexity
        * communication the entire way through - justifying tradeoffs
* system design
    - requirements gathering to a professional degree
        * understand what the hiring company wants&#x2F;needs
        --&gt;
</content>
        
    </entry>
</feed>
