<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kubenix: stronger primitives for cluster definitions on Jōkamachi Systems</title><link>https://jokamachi.systems/booklets/kubenix/</link><description>Recent content in Kubenix: stronger primitives for cluster definitions on Jōkamachi Systems</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://jokamachi.systems/booklets/kubenix/index.xml" rel="self" type="application/rss+xml"/><item><title>Why Kubernetes?</title><link>https://jokamachi.systems/chapters/kubenix-why-kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jokamachi.systems/chapters/kubenix-why-kubernetes/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Stub.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jōkamachi Systems has roots in functional programming and classic
Linux systems administration. The natural gravitational pull of
that combination is towards &lt;em&gt;prescriptive&lt;/em&gt; tools — Terraform,
NixOS, &lt;a href="https://terranix.org"&gt;terranix&lt;/a&gt;. You declare how the world
ought to be, run the apply, and the tool drives reality towards
your specification. Apply once. Done.&lt;/p&gt;
&lt;p&gt;This works beautifully when reality cooperates by holding its
shape.&lt;/p&gt;

&lt;h2 id="the-polite-fiction-of-a-snapshot"&gt;
 &lt;a class="hb-heading-link" href="#the-polite-fiction-of-a-snapshot"&gt;The polite fiction of a snapshot&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;In
&lt;a href="https://www.iankduncan.com/engineering/2026-02-09-what-functional-programmers-get-wrong-about-systems/"&gt;&lt;em&gt;What functional programmers get wrong about systems&lt;/em&gt;&lt;/a&gt;
(2026), Ian Duncan observes that&lt;/p&gt;</description></item><item><title>Why Kubenix?</title><link>https://jokamachi.systems/chapters/kubenix-why/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jokamachi.systems/chapters/kubenix-why/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Stub.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Kubernetes runs whatever spec you hand it; the question this chapter
answers is &lt;em&gt;what kind of artefact the spec should be&lt;/em&gt;. The short
answer is: not a pile of Helm charts.&lt;/p&gt;
&lt;p&gt;Helm charts are the Kubernetes ecosystem&amp;rsquo;s standard way to ship a
service. Each chart, in isolation, works fine. But a real cluster is
not one service; it&amp;rsquo;s many services, often inter-dependent, often
sharing config — DNS names, certificates, secrets, network policies,
RBAC bindings — that no individual chart owns.&lt;/p&gt;</description></item><item><title>Property testing Kubenix</title><link>https://jokamachi.systems/chapters/kubenix-property-testing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jokamachi.systems/chapters/kubenix-property-testing/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Stub.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The chapter covers the property-testing techniques we apply to
Kubenix-defined clusters: invariants that span services, the test
runner setup, examples of properties we ship by default, and how to
add tenant-specific properties.&lt;/p&gt;
&lt;p&gt;A property test for a cluster looks much like a property test for any
other piece of typed code: state an invariant in the type system or
in code, run a generator that produces representative cluster states,
and check that the invariant holds for every generated state. The
difference is the substrate — the &amp;ldquo;code&amp;rdquo; being tested is the desired
state of a cluster, not a function — and the value of the technique
scales with how much your cluster&amp;rsquo;s correctness depends on
relationships you can&amp;rsquo;t see by reading any one chart.&lt;/p&gt;</description></item></channel></rss>