<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Introduction on KubeClaw</title><link>https://projectious-work.github.io/kubeclaw/docs/introduction/</link><description>Recent content in Introduction on KubeClaw</description><generator>Hugo</generator><language>en</language><atom:link href="https://projectious-work.github.io/kubeclaw/docs/introduction/index.xml" rel="self" type="application/rss+xml"/><item><title>Architecture</title><link>https://projectious-work.github.io/kubeclaw/docs/introduction/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://projectious-work.github.io/kubeclaw/docs/introduction/architecture/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;KubeClaw creates a secure, IPv6-only Kubernetes cluster on Hetzner Cloud. The design prioritizes security through network isolation: no public IPv4 addresses, SSH access exclusively via Cloudflare Tunnel, and per-namespace egress control with Cilium network policies.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────┐
│ Internet │
└─────────────────────────────────────────────────────────────────┘
 │ │
 ▼ ▼
 ┌──────────────┐ ┌───────────────┐
 │ Cloudflare │ │ Admin Node │
 │ Tunnel │ │ 10.0.0.254 │
 │ (permanent) │ │ (temporary, │
 └──────┬───────┘ │ public IPv6) │
 │ └───────┬───────┘
 ▼ ▼
┌─────────────────────────────────────────────────────────────────┐
│ Hetzner Cloud │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Private Network (10.0.0.0/24) │ │
│ │ │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ │ │
│ │ │ control-01 │ │ control-02+ │ │ │
│ │ │ 10.0.0.2 │ │ 10.0.0.3+ │ │ │
│ │ │ (master, │◄►│ (replicas, │ │ │
│ │ │ cloudflared) │ │ 0-n instances) │ │ │
│ │ └────────┬────────┘ └─────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────┐ │ │
│ │ │ worker-nodes │ │ │
│ │ │ (0-n instances) │ │ │
│ │ └─────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="node-roles"&gt;Node Roles&lt;/h2&gt;
&lt;h3 id="master-control-node-control-01-10002"&gt;Master Control Node (control-01, 10.0.0.2)&lt;/h3&gt;
&lt;p&gt;The master control node always exists and serves as:&lt;/p&gt;</description></item><item><title>Security Model</title><link>https://projectious-work.github.io/kubeclaw/docs/introduction/security-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://projectious-work.github.io/kubeclaw/docs/introduction/security-model/</guid><description>&lt;p&gt;KubeClaw&amp;rsquo;s security is layered across three levels: Hetzner Cloud firewalls, host-level hardening, and Kubernetes network policies. See &lt;a href="https://projectious-work.github.io/kubeclaw/docs/introduction/architecture/"&gt;Architecture&lt;/a&gt; for the overall network design.&lt;/p&gt;
&lt;h2 id="firewall-rules-hetzner"&gt;Firewall Rules (Hetzner)&lt;/h2&gt;
&lt;p&gt;Hetzner Cloud firewalls are the first line of defense. Each node role has its own firewall:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Control nodes&lt;/strong&gt;: SSH from private network + localhost (for tunnel), ICMP from private network&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Worker nodes&lt;/strong&gt;: SSH from private network, ICMP from private network&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Admin node&lt;/strong&gt;: SSH from anywhere (temporary), ICMP from private network&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kubernetes ports (6443, 10250, 2379-2380, 30000-32767) are intentionally excluded from the Hetzner firewall and added only when deploying Kubernetes.&lt;/p&gt;</description></item><item><title>DNS and NAT64</title><link>https://projectious-work.github.io/kubeclaw/docs/introduction/dns-and-nat64/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://projectious-work.github.io/kubeclaw/docs/introduction/dns-and-nat64/</guid><description>&lt;p&gt;The cluster is IPv6-only &amp;ndash; but many services (GitHub CDN, container registries, package repos) are IPv4-only. &lt;strong&gt;NAT64/DNS64&lt;/strong&gt; provides transparent IPv4 reachability at the network layer, no application changes needed. This page covers how DNS64/NAT64 works, how it integrates with Kubernetes CoreDNS, and how to configure it.&lt;/p&gt;
&lt;h2 id="the-problem-ipv4-internet-from-ipv6-only-nodes"&gt;The Problem: IPv4 Internet from IPv6-Only Nodes&lt;/h2&gt;
&lt;p&gt;The nodes have no public IPv4 addresses. Most internet services (GitHub, Docker Hub, package repos) have IPv4 addresses. How does an IPv6-only node reach them?&lt;/p&gt;</description></item></channel></rss>