<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Devops on Ethan-ZYF</title><link>https://ethanzyf.com/tags/devops/</link><description>Recent content in Devops on Ethan-ZYF</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 01 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ethanzyf.com/tags/devops/index.xml" rel="self" type="application/rss+xml"/><item><title>Kubernetes 7-Day Intensive: Day 1 — kubectl Mastery</title><link>https://ethanzyf.com/blog/k8s-day1-notes/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://ethanzyf.com/blog/k8s-day1-notes/</guid><description>&lt;h2 id="environment-setup-day-0"&gt;
 Environment Setup (Day 0)
 &lt;a class="heading-link" href="#environment-setup-day-0"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Cluster:&lt;/strong&gt; kind (Kubernetes in Docker) — 1 control-plane + 2 worker nodes, Cilium CNI.&lt;/p&gt;
&lt;p&gt;Key &lt;code&gt;kind-cluster.yaml&lt;/code&gt; decisions:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;th&gt;Why&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;disableDefaultCNI&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Remove kindnet, install Cilium manually&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;podSubnet&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10.244.0.0/16&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;~65k addresses for Pods&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;serviceSubnet&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10.96.0.0/16&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Virtual IPs for Services, must not overlap podSubnet&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;extraPortMappings&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;80/443&lt;/td&gt;
 &lt;td&gt;Map host ports into control-plane for Day 4 Ingress&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ingress-ready=true&lt;/code&gt; label&lt;/td&gt;
 &lt;td&gt;via &lt;code&gt;kubeadmConfigPatches&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Tells ingress-nginx which node to schedule on&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;kubeadmConfigPatches&lt;/code&gt; embeds a &lt;strong&gt;kubeadm YAML string&lt;/strong&gt; inside kind&amp;rsquo;s YAML (using &lt;code&gt;|&lt;/code&gt; block scalar). Two separate schemas nested together — easy to confuse.&lt;/p&gt;</description></item></channel></rss>