diff options
| -rw-r--r-- | about/resources.html | 210 | ||||
| -rw-r--r-- | gemfeed/2025-10-02-f3s-kubernetes-with-freebsd-part-7.html | 40 | ||||
| -rw-r--r-- | gemfeed/2025-12-07-f3s-kubernetes-with-freebsd-part-8.html | 40 | ||||
| -rw-r--r-- | gemfeed/DRAFT-f3s-kubernetes-with-freebsd-part-X.html | 1227 | ||||
| -rw-r--r-- | gemfeed/atom.xml | 82 | ||||
| -rw-r--r-- | index.html | 2 | ||||
| -rw-r--r-- | uptime-stats.html | 2 |
7 files changed, 1435 insertions, 168 deletions
diff --git a/about/resources.html b/about/resources.html index 3bada362..30c8db37 100644 --- a/about/resources.html +++ b/about/resources.html @@ -50,112 +50,112 @@ <span>In random order:</span><br /> <br /> <ul> -<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li> +<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li> +<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li> +<li>Raku Recipes; J.J. Merelo; Apress</li> +<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li> +<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly</li> +<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li> +<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li> +<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly</li> +<li>21st Century C: C Tips from the New School; Ben Klemens; O'Reilly</li> +<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li> +<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li> +<li>The Docker Book; James Turnbull; Kindle</li> <li>Seeking SRE: Conversations About Running Production Systems at Scale; David N. Blank-Edelman; eBook</li> -<li>Concurrency in Go; Katherine Cox-Buday; O'Reilly</li> -<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li> -<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li> -<li>The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress</li> +<li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li> <li>Effective Java; Joshua Bloch; Addison-Wesley Professional</li> -<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly</li> -<li>Site Reliability Engineering; How Google runs production systems; O'Reilly</li> -<li>Data Science at the Command Line; Jeroen Janssens; O'Reilly</li> +<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly</li> +<li>Effective awk programming; Arnold Robbins; O'Reilly</li> +<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li> +<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li> +<li>Funktionale Programmierung; Peter Pepper; Springer</li> <li>Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers </li> -<li>DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible</li> -<li>Ultimate Go Notebook; Bill Kennedy</li> -<li>The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional</li> -<li>DNS and BIND; Cricket Liu; O'Reilly</li> -<li>Modern Perl; Chromatic ; Onyx Neon Press</li> -<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly</li> <li>Pro Puppet; James Turnbull, Jeffrey McCune; Apress</li> -<li>Raku Recipes; J.J. Merelo; Apress</li> -<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li> -<li>Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press</li> -<li>The Docker Book; James Turnbull; Kindle</li> +<li>Polished Ruby Programming; Jeremy Evans; Packt Publishing</li> <li>Developing Games in Java; David Brackeen and others...; New Riders</li> -<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li> -<li>97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly</li> +<li>Ultimate Go Notebook; Bill Kennedy</li> <li>Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf</li> -<li>Terraform Cookbook; Mikael Krief; Packt Publishing</li> -<li>Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook</li> <li>Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers</li> -<li>Leanring eBPF; Liz Rice; O'Reilly</li> +<li>Systemprogrammierung in Go; Frank Müller; dpunkt</li> +<li>Data Science at the Command Line; Jeroen Janssens; O'Reilly</li> <li>C++ Programming Language; Bjarne Stroustrup;</li> -<li>Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly</li> -<li>Java ist auch eine Insel; Christian Ullenboom; </li> -<li>The Pragmatic Programmer; David Thomas; Addison-Wesley</li> -<li>21st Century C: C Tips from the New School; Ben Klemens; O'Reilly</li> -<li>Funktionale Programmierung; Peter Pepper; Springer</li> -<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly</li> -<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li> +<li>Site Reliability Engineering; How Google runs production systems; O'Reilly</li> +<li>Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt </li> <li>Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press</li> -<li>Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly</li> -<li>The Kubernetes Book; Nigel Poulton; Unabridged Audiobook</li> -<li>100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications</li> -<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li> -<li>Perl New Features; Joshua McAdams, brian d foy; Perl School</li> -<li>The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton</li> -<li>Systemprogrammierung in Go; Frank Müller; dpunkt</li> -<li>Effective awk programming; Arnold Robbins; O'Reilly</li> +<li>Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner</li> +<li>Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson</li> <li>Raku Fundamentals; Moritz Lenz; Apress</li> +<li>Java ist auch eine Insel; Christian Ullenboom; </li> +<li>Leanring eBPF; Liz Rice; O'Reilly</li> +<li>Modern Perl; Chromatic ; Onyx Neon Press</li> +<li>Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications</li> +<li>Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly</li> +<li>The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible</li> +<li>Higher Order Perl; Mark Dominus; Morgan Kaufmann</li> +<li>Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly</li> +<li>The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress</li> +<li>Concurrency in Go; Katherine Cox-Buday; O'Reilly</li> +<li>DNS and BIND; Cricket Liu; O'Reilly</li> +<li>Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly</li> </ul><br /> <h2 style='display: inline' id='technical-references'>Technical references</h2><br /> <br /> <span>I didn't read them from the beginning to the end, but I am using them to look up things. The books are in random order:</span><br /> <br /> <ul> -<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly</li> -<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li> -<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li> <li>Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley</li> <li>Relayd and Httpd Mastery; Michael W Lucas</li> +<li>BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley</li> <li>Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly</li> +<li>Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly</li> <li>The Linux Programming Interface; Michael Kerrisk; No Starch Press </li> <li>Implementing Service Level Objectives; Alex Hidalgo; O'Reilly</li> +<li>Go: Design Patterns for Real-World Projects; Mat Ryer; Packt</li> </ul><br /> <h2 style='display: inline' id='self-development-and-soft-skills-books'>Self-development and soft-skills books</h2><br /> <br /> <span>In random order:</span><br /> <br /> <ul> -<li>Ultralearning; Anna Laurent; Self-published via Amazon</li> -<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li> -<li>Atomic Habits; James Clear; Random House Business</li> -<li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li> -<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK</li> +<li>Ultralearning; Scott Young; Thorsons</li> +<li>Getting Things Done; David Allen</li> <li>Eat That Frog!; Brian Tracy; Hodder Paperbacks</li> +<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li> +<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li> +<li>The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook </li> +<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li> +<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li> +<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li> +<li>Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook</li> +<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li> +<li>Soft Skills; John Sommez; Manning Publications</li> +<li>Atomic Habits; James Clear; Random House Business</li> +<li>Ultralearning; Anna Laurent; Self-published via Amazon</li> +<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li> <li>The Good Enough Job; Simone Stolzoff; Ebury Edge</li> -<li>Deep Work; Cal Newport; Piatkus</li> +<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li> <li>The Power of Now; Eckhard Tolle; Yellow Kite</li> -<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li> -<li>101 Essays that change the way you think; Brianna Wiest; Audiobook</li> -<li>Digital Minimalism; Cal Newport; Portofolio Penguin</li> -<li>The Software Engineer's Guidebook: Navigating senior, tech lead, and staff engineer positions at tech companies and startups; Gergely Orosz; Audiobook </li> <li>Influence without Authority; A. Cohen, D. Bradford; Wiley</li> -<li>Never Split the Difference; Chris Voss, Tahl Raz; Random House Business</li> -<li>The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)</li> -<li>Getting Things Done; David Allen</li> -<li>Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook</li> -<li>Eat That Frog; Brian Tracy</li> -<li>The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook</li> -<li>So Good They Can't Ignore You; Cal Newport; Business Plus</li> +<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li> +<li>Meditation for Mortals, Oliver Burkeman, Audiobook</li> +<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li> <li>The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook</li> +<li>The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK</li> <li>The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books</li> -<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li> -<li>Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne</li> -<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li> -<li>Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion</li> +<li>The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd</li> +<li>Eat That Frog; Brian Tracy</li> <li>The Bullet Journal Method; Ryder Carroll; Fourth Estate</li> -<li>Soft Skills; John Sommez; Manning Publications</li> -<li>Meditation for Mortals, Oliver Burkeman, Audiobook</li> -<li>Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press</li> +<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li> +<li>So Good They Can't Ignore You; Cal Newport; Business Plus</li> +<li>The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select</li> <li>Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing</li> -<li>Stop starting, start finishing; Arne Roock; Lean-Kanban University </li> <li>Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly</li> -<li>The Joy of Missing Out; Christina Crook; New Society Publishers</li> +<li>The Courage to Be Disliked; Ichiro Kishimi and Fumitake Koga; Audiobook</li> +<li>Psycho-Cybernetics; Maxwell Maltz; Perigee Books</li> +<li>Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)</li> +<li>Deep Work; Cal Newport; Piatkus</li> <li>Slow Productivity; Cal Newport; Penguin Random House</li> -<li>Ultralearning; Scott Young; Thorsons</li> -<li>97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook</li> </ul><br /> <a class='textlink' href='../notes/index.html'>Here are notes of mine for some of the books</a><br /> <br /> @@ -164,31 +164,31 @@ <span>Some of these were in-person with exams; others were online learning lectures only. In random order:</span><br /> <br /> <ul> -<li>Ultimate Go Programming; Bill Kennedy; O'Reilly Online</li> -<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li> -<li>Apache Tomcat Best Practises; 3-day on-site training</li> -<li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li> -<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li> -<li>Protocol buffers; O'Reilly Online</li> -<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li> -<li>Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online</li> <li>Scripting Vim; Damian Conway; O'Reilly Online</li> -<li>AWS Immersion Day; Amazon; 1-day interactive online training </li> +<li>Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon</li> <li>MySQL Deep Dive Workshop; 2-day on-site training</li> +<li>F5 Loadbalancers Training; 2-day on-site training; F5, Inc. </li> +<li>Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training</li> <li>Developing IaC with Terraform (with Live Lessons); O'Reilly Online</li> +<li>Protocol buffers; O'Reilly Online</li> +<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online</li> +<li>Functional programming lecture; Remote University of Hagen</li> <li>Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)</li> +<li>Structure and Interpretation of Computer Programs; Harold Abelson and more...; </li> +<li>Ultimate Go Programming; Bill Kennedy; O'Reilly Online</li> +<li>AWS Immersion Day; Amazon; 1-day interactive online training </li> +<li>Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online</li> <li>The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online</li> -<li>Functional programming lecture; Remote University of Hagen</li> -<li>The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online</li> +<li>Apache Tomcat Best Practises; 3-day on-site training</li> </ul><br /> <h2 style='display: inline' id='technical-guides'>Technical guides</h2><br /> <br /> <span>These are not whole books, but guides (smaller or larger) which I found very useful. in random order:</span><br /> <br /> <ul> +<li>How CPUs work at https://cpu.land</li> <li>Advanced Bash-Scripting Guide </li> <li>Raku Guide at https://raku.guide </li> -<li>How CPUs work at https://cpu.land</li> </ul><br /> <h2 style='display: inline' id='podcasts'>Podcasts</h2><br /> <br /> @@ -197,61 +197,61 @@ <span>In random order:</span><br /> <br /> <ul> -<li>The ProdCast (Google SRE Podcast)</li> -<li>BSD Now [BSD]</li> -<li>Pratical AI</li> +<li>Wednesday Wisdom</li> +<li>Dev Interrupted</li> <li>Deep Questions with Cal Newport</li> +<li>Hidden Brain</li> +<li>Cup o' Go [Golang]</li> <li>Fork Around And Find Out</li> -<li>The Changelog Podcast(s)</li> -<li>Fallthrough [Golang]</li> +<li>Pratical AI</li> +<li>Modern Mentor</li> <li>Maintainable</li> -<li>Cup o' Go [Golang]</li> -<li>Hidden Brain</li> +<li>The Changelog Podcast(s)</li> +<li>The ProdCast (Google SRE Podcast)</li> +<li>BSD Now [BSD]</li> <li>Backend Banter</li> +<li>Fallthrough [Golang]</li> <li>The Pragmatic Engineer Podcast</li> -<li>Wednesday Wisdom</li> -<li>Dev Interrupted</li> -<li>Modern Mentor</li> </ul><br /> <h3 style='display: inline' id='podcasts-i-liked'>Podcasts I liked</h3><br /> <br /> <span>I liked them but am not listening to them anymore. The podcasts have either "finished" (no more episodes) or I stopped listening to them due to time constraints or a shift in my interests.</span><br /> <br /> <ul> -<li>CRE: Chaosradio Express [german]</li> -<li>Ship It (predecessor of Fork Around And Find Out)</li> -<li>FLOSS weekly</li> -<li>Modern Mentor</li> <li>Go Time (predecessor of fallthrough)</li> +<li>Modern Mentor</li> +<li>CRE: Chaosradio Express [german]</li> <li>Java Pub House</li> +<li>FLOSS weekly</li> +<li>Ship It (predecessor of Fork Around And Find Out)</li> </ul><br /> <h2 style='display: inline' id='newsletters-i-like'>Newsletters I like</h2><br /> <br /> <span>This is a mix of tech and non-tech newsletters I am subscribed to. In random order:</span><br /> <br /> <ul> -<li>byteSizeGo</li> -<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li> +<li>Ruby Weekly</li> +<li>The Pragmatic Engineer</li> +<li>The Valuable Dev</li> <li>Changelog News</li> -<li>Golang Weekly</li> +<li>Andreas Brandhorst Newsletter (Sci-Fi author)</li> <li>Register Spill</li> -<li>The Valuable Dev</li> -<li>Monospace Mentor</li> +<li>byteSizeGo</li> +<li>The Imperfectionist</li> +<li>Golang Weekly</li> <li>VK Newsletter</li> +<li>Monospace Mentor</li> <li>Applied Go Weekly Newsletter</li> -<li>Ruby Weekly</li> -<li>The Pragmatic Engineer</li> -<li>The Imperfectionist</li> </ul><br /> <h2 style='display: inline' id='magazines-i-liked'>Magazines I like(d)</h2><br /> <br /> <span>This is a mix of tech I like(d). I may not be a current subscriber, but now and then, I buy an issue. In random order:</span><br /> <br /> <ul> -<li>freeX (not published anymore)</li> -<li>Linux Magazine</li> <li>Linux User</li> +<li>Linux Magazine</li> <li>LWN (online only)</li> +<li>freeX (not published anymore)</li> </ul><br /> <h1 style='display: inline' id='formal-education'>Formal education</h1><br /> <br /> diff --git a/gemfeed/2025-10-02-f3s-kubernetes-with-freebsd-part-7.html b/gemfeed/2025-10-02-f3s-kubernetes-with-freebsd-part-7.html index 70a8e44f..e17fdf7d 100644 --- a/gemfeed/2025-10-02-f3s-kubernetes-with-freebsd-part-7.html +++ b/gemfeed/2025-10-02-f3s-kubernetes-with-freebsd-part-7.html @@ -33,6 +33,7 @@ <ul> <li><a href='#f3s-kubernetes-with-freebsd---part-7-k3s-and-first-pod-deployments'>f3s: Kubernetes with FreeBSD - Part 7: k3s and first pod deployments</a></li> <li>⇢ <a href='#introduction'>Introduction</a></li> +<li>⇢ <a href='#important-note-gitops-migration'>Important Note: GitOps Migration</a></li> <li>⇢ <a href='#updating'>Updating</a></li> <li>⇢ <a href='#installing-k3s'>Installing k3s</a></li> <li>⇢ ⇢ <a href='#generating-k3stoken-and-starting-the-first-k3s-node'>Generating <span class='inlinecode'>K3S_TOKEN</span> and starting the first k3s node</a></li> @@ -63,6 +64,29 @@ <br /> <a class='textlink' href='https://k3s.io'>https://k3s.io</a><br /> <br /> +<h2 style='display: inline' id='important-note-gitops-migration'>Important Note: GitOps Migration</h2><br /> +<br /> +<span>**Note:** After publishing this blog post, the f3s cluster was migrated from imperative Helm deployments to declarative GitOps using ArgoCD. The Kubernetes manifests and Helm charts in the repository have been reorganized for ArgoCD-based continuous deployment.</span><br /> +<br /> +<span>**To view the exact manifests and charts as they existed when this blog post was written** (before the ArgoCD migration), check out the pre-ArgoCD revision:</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre>$ git clone https://codeberg.org/snonux/conf.git +$ cd conf +$ git checkout 15a86f3 <i><font color="silver"># Last commit before ArgoCD migration</font></i> +$ cd f3s/ +</pre> +<br /> +<span>**Current master branch** contains the ArgoCD-managed versions with:</span><br /> +<span>- Application manifests organized under <span class='inlinecode'>argocd-apps/{monitoring,services,infra,test}/</span></span><br /> +<span>- Additional resources under <span class='inlinecode'>*/manifests/</span> directories (e.g., <span class='inlinecode'>prometheus/manifests/</span>)</span><br /> +<span>- Justfiles updated to trigger ArgoCD syncs instead of direct Helm commands</span><br /> +<br /> +<span>The deployment concepts and architecture remain the same—only the deployment method changed from imperative (<span class='inlinecode'>helm install/upgrade</span>) to declarative (GitOps with ArgoCD). For details on the GitOps migration, see Part X of this series.</span><br /> +<br /> <h2 style='display: inline' id='updating'>Updating</h2><br /> <br /> <span>Before proceeding, I bring all systems involved up-to-date. On all three Rocky Linux 9 boxes <span class='inlinecode'>r0</span>, <span class='inlinecode'>r1</span>, and <span class='inlinecode'>r2</span>:</span><br /> @@ -878,21 +902,7 @@ http://www.gnu.org/software/src-highlite --> <br /> <a class='textlink' href='https://codeberg.org/snonux/conf/src/branch/master/f3s'>codeberg.org/snonux/conf/f3s</a><br /> <br /> -<span>**Note:** After publishing this blog post, the f3s cluster was migrated to ArgoCD GitOps. The Kubernetes manifests and Helm charts in the repository have been reorganized for declarative deployment. To view the exact manifests and charts as they existed when this blog post was written (before ArgoCD migration), check out the pre-ArgoCD revision:</span><br /> -<br /> -<!-- Generator: GNU source-highlight 3.1.9 -by Lorenzo Bettini -http://www.lorenzobettini.it -http://www.gnu.org/software/src-highlite --> -<pre>$ git clone https://codeberg.org/snonux/conf.git -$ cd conf -$ git checkout 15a86f3 <i><font color="silver"># Last commit before ArgoCD migration</font></i> -$ cd f3s/ -</pre> -<br /> -<span>The current master branch contains the ArgoCD-managed versions with manifests organized under <span class='inlinecode'>argocd-apps/</span> and <span class='inlinecode'>*/manifests/</span> directories.</span><br /> -<br /> -<span>Within that repo, the <span class='inlinecode'>examples/conf/f3s/registry/</span> directory contains the Helm chart, a <span class='inlinecode'>Justfile</span>, and a detailed <span class='inlinecode'>README</span>. Here's the condensed walkthrough I used to roll out the registry with Helm.</span><br /> +<span>Within that repo, the <span class='inlinecode'>f3s/registry/</span> directory contains the Helm chart, a <span class='inlinecode'>Justfile</span>, and a detailed <span class='inlinecode'>README</span>. Here's the condensed walkthrough I used to roll out the registry with Helm.</span><br /> <br /> <h3 style='display: inline' id='prepare-the-nfs-backed-storage'>Prepare the NFS-backed storage</h3><br /> <br /> diff --git a/gemfeed/2025-12-07-f3s-kubernetes-with-freebsd-part-8.html b/gemfeed/2025-12-07-f3s-kubernetes-with-freebsd-part-8.html index 00fcadc9..0295f7dc 100644 --- a/gemfeed/2025-12-07-f3s-kubernetes-with-freebsd-part-8.html +++ b/gemfeed/2025-12-07-f3s-kubernetes-with-freebsd-part-8.html @@ -33,6 +33,7 @@ <ul> <li><a href='#f3s-kubernetes-with-freebsd---part-8-observability'>f3s: Kubernetes with FreeBSD - Part 8: Observability</a></li> <li>⇢ <a href='#introduction'>Introduction</a></li> +<li>⇢ <a href='#important-note-gitops-migration'>Important Note: GitOps Migration</a></li> <li>⇢ <a href='#persistent-storage-recap'>Persistent storage recap</a></li> <li>⇢ <a href='#the-monitoring-namespace'>The monitoring namespace</a></li> <li>⇢ <a href='#installing-prometheus-and-grafana'>Installing Prometheus and Grafana</a></li> @@ -74,7 +75,30 @@ <br /> <span>All manifests for the f3s stack live in my configuration repository:</span><br /> <br /> -<a class='textlink' href='https://codeberg.org/snonux/conf/src/branch/master/f3s'>codeberg.org/snonux/conf/f3s </a><br /> +<a class='textlink' href='https://codeberg.org/snonux/conf/src/branch/master/f3s'>codeberg.org/snonux/conf/f3s</a><br /> +<br /> +<h2 style='display: inline' id='important-note-gitops-migration'>Important Note: GitOps Migration</h2><br /> +<br /> +<span>**Note:** After publishing this blog post, the f3s cluster was migrated from imperative Helm deployments to declarative GitOps using ArgoCD. The Kubernetes manifests, Helm charts, and Justfiles in the repository have been reorganized for ArgoCD-based continuous deployment.</span><br /> +<br /> +<span>**To view the exact configuration as it existed when this blog post was written** (before the ArgoCD migration), check out the pre-ArgoCD revision:</span><br /> +<br /> +<!-- Generator: GNU source-highlight 3.1.9 +by Lorenzo Bettini +http://www.lorenzobettini.it +http://www.gnu.org/software/src-highlite --> +<pre>$ git clone https://codeberg.org/snonux/conf.git +$ cd conf +$ git checkout 15a86f3 <i><font color="silver"># Last commit before ArgoCD migration</font></i> +$ cd f3s/prometheus/ +</pre> +<br /> +<span>**Current master branch** contains the ArgoCD-managed versions with:</span><br /> +<span>- Application manifests organized under <span class='inlinecode'>argocd-apps/{monitoring,services,infra,test}/</span></span><br /> +<span>- Resources organized under <span class='inlinecode'>prometheus/manifests/</span>, <span class='inlinecode'>loki/</span>, etc.</span><br /> +<span>- Justfiles updated to trigger ArgoCD syncs instead of direct Helm commands</span><br /> +<br /> +<span>The deployment concepts and architecture remain the same—only the deployment method changed from imperative (<span class='inlinecode'>helm install/upgrade</span>) to declarative (GitOps with ArgoCD). For details on the GitOps migration, see Part X of this series. </span><br /> <br /> <h2 style='display: inline' id='persistent-storage-recap'>Persistent storage recap</h2><br /> <br /> @@ -107,20 +131,6 @@ namespace/monitoring created <br /> <h2 style='display: inline' id='installing-prometheus-and-grafana'>Installing Prometheus and Grafana</h2><br /> <br /> -<span>**Note:** After publishing this blog post, the f3s cluster was migrated to ArgoCD GitOps. The Kubernetes manifests, Helm charts, and Justfiles in the repository have been reorganized for declarative deployment. To view the exact configuration as it existed when this blog post was written (before ArgoCD migration), check out the pre-ArgoCD revision:</span><br /> -<br /> -<!-- Generator: GNU source-highlight 3.1.9 -by Lorenzo Bettini -http://www.lorenzobettini.it -http://www.gnu.org/software/src-highlite --> -<pre>$ git clone https://codeberg.org/snonux/conf.git -$ cd conf -$ git checkout 15a86f3 <i><font color="silver"># Last commit before ArgoCD migration</font></i> -$ cd f3s/prometheus/ -</pre> -<br /> -<span>The current master branch contains the ArgoCD-managed versions with Application manifests under <span class='inlinecode'>argocd-apps/</span> and resources organized under <span class='inlinecode'>prometheus/manifests/</span>, <span class='inlinecode'>loki/</span>, etc. The Justfiles have been updated to trigger ArgoCD syncs instead of direct Helm commands.</span><br /> -<br /> <span>Prometheus and Grafana are deployed together using the <span class='inlinecode'>kube-prometheus-stack</span> Helm chart from the Prometheus community. This chart bundles Prometheus, Grafana, Alertmanager, and various exporters (Node Exporter, Kube State Metrics) into a single deployment. Ill explain what each component does in detail later when we look at the running pods.</span><br /> <br /> <h3 style='display: inline' id='prerequisites'>Prerequisites</h3><br /> diff --git a/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-part-X.html b/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-part-X.html new file mode 100644 index 00000000..5d58d4c5 --- /dev/null +++ b/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-part-X.html @@ -0,0 +1,1227 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<title>f3s: Kubernetes with FreeBSD - Part X: GitOps with ArgoCD</title> +<link rel="shortcut icon" type="image/gif" href="/favicon.ico" /> +<link rel="stylesheet" href="../style.css" /> +<link rel="stylesheet" href="style-override.css" /> +</head> +<body> +<p class="header"> +<a href="https://foo.zone">Home</a> | <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-part-X.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-part-X.gmi">Gemini</a> +</p> +<h1 style='display: inline' id='f3s-kubernetes-with-freebsd---part-x-gitops-with-argocd'>f3s: Kubernetes with FreeBSD - Part X: GitOps with ArgoCD</h1><br /> +<br /> +<span class='quote'>DRAFT - Not yet published</span><br /> +<br /> +<span>This is part X of the f3s series for my self-hosting demands in a home lab. f3s? The "f" stands for FreeBSD, and the "3s" stands for k3s, the Kubernetes distribution I use on FreeBSD-based physical machines.</span><br /> +<br /> +<a class='textlink' href='./2024-11-17-f3s-kubernetes-with-freebsd-part-1.html'>2024-11-17 f3s: Kubernetes with FreeBSD - Part 1: Setting the stage</a><br /> +<a class='textlink' href='./2024-12-03-f3s-kubernetes-with-freebsd-part-2.html'>2024-12-03 f3s: Kubernetes with FreeBSD - Part 2: Hardware and base installation</a><br /> +<a class='textlink' href='./2025-02-01-f3s-kubernetes-with-freebsd-part-3.html'>2025-02-01 f3s: Kubernetes with FreeBSD - Part 3: Protecting from power cuts</a><br /> +<a class='textlink' href='./2025-04-05-f3s-kubernetes-with-freebsd-part-4.html'>2025-04-05 f3s: Kubernetes with FreeBSD - Part 4: Rocky Linux Bhyve VMs</a><br /> +<a class='textlink' href='./2025-05-11-f3s-kubernetes-with-freebsd-part-5.html'>2025-05-11 f3s: Kubernetes with FreeBSD - Part 5: WireGuard mesh network</a><br /> +<a class='textlink' href='./2025-07-14-f3s-kubernetes-with-freebsd-part-6.html'>2025-07-14 f3s: Kubernetes with FreeBSD - Part 6: Storage</a><br /> +<a class='textlink' href='./2025-10-02-f3s-kubernetes-with-freebsd-part-7.html'>2025-10-02 f3s: Kubernetes with FreeBSD - Part 7: k3s and first pod deployments</a><br /> +<a class='textlink' href='./2025-12-07-f3s-kubernetes-with-freebsd-part-8.html'>2025-12-07 f3s: Kubernetes with FreeBSD - Part 8: Observability</a><br /> +<br /> +<a href='./f3s-kubernetes-with-freebsd-part-1/f3slogo.png'><img alt='f3s logo' title='f3s logo' src='./f3s-kubernetes-with-freebsd-part-1/f3slogo.png' /></a><br /> +<br /> +<h2 style='display: inline' id='table-of-contents'>Table of Contents</h2><br /> +<br /> +<ul> +<li><a href='#f3s-kubernetes-with-freebsd---part-x-gitops-with-argocd'>f3s: Kubernetes with FreeBSD - Part X: GitOps with ArgoCD</a></li> +<li>⇢ <a href='#introduction'>Introduction</a></li> +<li>⇢ <a href='#what-is-gitops'>What is GitOps?</a></li> +<li>⇢ <a href='#what-is-argocd'>What is ArgoCD?</a></li> +<li>⇢ <a href='#why-argocd-for-f3s'>Why ArgoCD for f3s?</a></li> +<li>⇢ <a href='#deploying-argocd'>Deploying ArgoCD</a></li> +<li>⇢ ⇢ <a href='#prerequisites'>Prerequisites</a></li> +<li>⇢ ⇢ <a href='#installing-argocd'>Installing ArgoCD</a></li> +<li>⇢ ⇢ <a href='#accessing-argocd'>Accessing ArgoCD</a></li> +<li>⇢ <a href='#argocd-application-structure'>ArgoCD Application Structure</a></li> +<li>⇢ <a href='#repository-organization'>Repository Organization</a></li> +<li>⇢ <a href='#migration-strategy-incremental-one-app-at-a-time'>Migration Strategy: Incremental, One App at a Time</a></li> +<li>⇢ ⇢ <a href='#migration-phases'>Migration Phases</a></li> +<li>⇢ <a href='#example-migration-miniflux'>Example Migration: Miniflux</a></li> +<li>⇢ ⇢ <a href='#before-imperative-helm-deployment'>Before: Imperative Helm deployment</a></li> +<li>⇢ ⇢ <a href='#after-declarative-gitops-with-argocd'>After: Declarative GitOps with ArgoCD</a></li> +<li>⇢ ⇢ <a href='#migration-procedure'>Migration procedure</a></li> +<li>⇢ <a href='#complex-migration-prometheus-with-multi-source'>Complex Migration: Prometheus with Multi-Source</a></li> +<li>⇢ ⇢ <a href='#sync-waves-and-hooks'>Sync Waves and Hooks</a></li> +<li>⇢ <a href='#migration-results'>Migration Results</a></li> +<li>⇢ <a href='#benefits-realized'>Benefits Realized</a></li> +<li>⇢ ⇢ <a href='#1-single-source-of-truth'>1. Single Source of Truth</a></li> +<li>⇢ ⇢ <a href='#2-automatic-synchronization'>2. Automatic Synchronization</a></li> +<li>⇢ ⇢ <a href='#3-drift-detection-and-self-healing'>3. Drift Detection and Self-Healing</a></li> +<li>⇢ ⇢ <a href='#4-easy-rollbacks'>4. Easy Rollbacks</a></li> +<li>⇢ ⇢ <a href='#5-disaster-recovery'>5. Disaster Recovery</a></li> +<li>⇢ ⇢ <a href='#6-documentation-by-default'>6. Documentation by Default</a></li> +<li>⇢ ⇢ <a href='#7-safe-experimentation'>7. Safe Experimentation</a></li> +<li>⇢ <a href='#challenges-and-solutions'>Challenges and Solutions</a></li> +<li>⇢ ⇢ <a href='#challenge-1-helm-release-adoption'>Challenge 1: Helm Release Adoption</a></li> +<li>⇢ ⇢ <a href='#challenge-2-persistent-volumes-not-tracked-by-helm'>Challenge 2: Persistent Volumes Not Tracked by Helm</a></li> +<li>⇢ ⇢ <a href='#challenge-3-secrets-management'>Challenge 3: Secrets Management</a></li> +<li>⇢ ⇢ <a href='#challenge-4-grafana-not-reloading-datasources'>Challenge 4: Grafana Not Reloading Datasources</a></li> +<li>⇢ ⇢ <a href='#challenge-5-prometheus-with-multiple-sources'>Challenge 5: Prometheus With Multiple Sources</a></li> +<li>⇢ ⇢ <a href='#challenge-6-sync-ordering-for-prometheus'>Challenge 6: Sync Ordering for Prometheus</a></li> +<li>⇢ <a href='#justfile-evolution'>Justfile Evolution</a></li> +<li>⇢ <a href='#lessons-learned'>Lessons Learned</a></li> +<li>⇢ <a href='#future-improvements'>Future Improvements</a></li> +<li>⇢ ⇢ <a href='#1-external-secrets-operator'>1. External Secrets Operator</a></li> +<li>⇢ ⇢ <a href='#2-applicationset-for-similar-apps'>2. ApplicationSet for Similar Apps</a></li> +<li>⇢ ⇢ <a href='#3-app-of-apps-pattern'>3. App-of-Apps Pattern</a></li> +<li>⇢ ⇢ <a href='#4-argocd-image-updater'>4. ArgoCD Image Updater</a></li> +<li>⇢ <a href='#summary'>Summary</a></li> +</ul><br /> +<h2 style='display: inline' id='introduction'>Introduction</h2><br /> +<br /> +<span>In the previous posts, I deployed applications to the k3s cluster using Helm charts and Justfiles—running <span class='inlinecode'>just install</span> or <span class='inlinecode'>just upgrade</span> to imperatively push changes to the cluster. While this approach works, it has several drawbacks:</span><br /> +<br /> +<ul> +<li>**No single source of truth**: The cluster state depends on which commands were run and when</li> +<li>**Manual synchronization**: Every change requires manually running commands</li> +<li>**Drift detection is hard**: No easy way to know if cluster state matches the desired configuration</li> +<li>**Rollback complexity**: Rolling back changes means re-running old Helm commands</li> +<li>**No audit trail**: Hard to track who changed what and when</li> +</ul><br /> +<span>This blog post covers the migration from imperative Helm deployments to declarative GitOps using ArgoCD. After this migration, the Git repository becomes the single source of truth, and ArgoCD automatically ensures the cluster matches what's defined in Git.</span><br /> +<br /> +<h2 style='display: inline' id='what-is-gitops'>What is GitOps?</h2><br /> +<br /> +<span>GitOps is an operational framework that applies DevOps best practices—like version control, collaboration, and CI/CD—to infrastructure automation. The core idea is simple: the entire desired state of your infrastructure is stored in Git, and automated processes ensure the actual state matches the desired state.</span><br /> +<br /> +<span>Key principles:</span><br /> +<br /> +<ul> +<li>**Declarative**: The system's desired state is described declaratively (YAML manifests, Helm values)</li> +<li>**Versioned and immutable**: All changes are committed to Git, providing a complete history</li> +<li>**Pulled automatically**: An agent in the cluster continuously pulls the desired state from Git</li> +<li>**Continuously reconciled**: The agent ensures the actual state matches the desired state, automatically correcting drift</li> +</ul><br /> +<span>For Kubernetes, this means:</span><br /> +<br /> +<span>1. All manifests, Helm charts, and co |
