main
  1<!DOCTYPE html>
  2<html lang="en">
  3<head>
  4<!-- Sep 03, 2024 -->
  5<meta charset="utf-8" />
  6<meta name="viewport" content="width=device-width, initial-scale=1" />
  7<title>kind</title>
  8<meta name="author" content="Vincent Demeester" />
  9<meta name="keywords" content="post" />
 10<meta name="generator" content="Org Mode" />
 11<link rel="stylesheet" type="text/css" href="/css/2022.css" />
 12<link rel="stylesheet" type="text/css" href="/css/syntax.css" />
 13<link rel='icon' type='image/x-icon' href='/images/favicon.ico'/>
 14<meta name='viewport' content='width=device-width, initial-scale=1'>
 15</head>
 16<body>
 17<main id="content" class="content">
 18<header>
 19<h1 class="title">kind</h1>
 20</header><p>
 21<a href="https://kind.sigs.k8s.io/"><code>kind</code></a> runs <a href="kubernetes.html">Kubernetes</a> in <a href="docker.html">Docker</a> containers, and maybe more in the future.
 22</p>
 23<section id="outline-container-Multi-node%20setup" class="outline-2">
 24<h2 id="Multi-node%20setup">Multi-node setup</h2>
 25<div class="outline-text-2" id="text-Multi-node%20setup">
 26<p>
 27I am using the following configuration to be able to run a <code>kind</code> cluster on one of my local
 28server and target it from my laptop.
 29</p>
 30
 31<div class='drawer note'>
 32<h6>Note</h6>
 33<p>
 34wakasu.home IP is <code>192.168.1.77</code>
 35</p>
 36</div>
 37
 38<div class="org-src-container">
 39<pre class="src src-yaml">kind: Cluster
 40apiVersion: kind.x-k8s.io/v1alpha4
 41networking:
 42  apiServerAddress: "192.168.1.77"
 43  apiServerPort: 8443
 44containerdConfigPatches:
 45- |-
 46  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:5000"]
 47    endpoint = ["http://sakhalin.home:5000"]
 48nodes:
 49- role: control-plane
 50  kubeadmConfigPatches:
 51  - |
 52    kind: InitConfiguration
 53    nodeRegistration:
 54      kubeletExtraArgs:
 55        node-labels: "ingress-ready=true"
 56  extraPortMappings:
 57  - containerPort: 80
 58    hostPort: 80
 59    protocol: TCP
 60  - containerPort: 443
 61    hostPort: 443
 62    protocol: TCP
 63- role: worker
 64- role: worker
 65</pre>
 66</div>
 67
 68<p>
 69Then, to provision this and get the configuration file, it&rsquo;s a matter of 2 commands.
 70</p>
 71
 72<div class="org-src-container">
 73<pre class="src src-shell">ssh wakasu.home kind create cluster --config ~/var/kind/wakasu.kind.yaml --name wakasu
 74ssh wakasu.home kind get kubeconfig --name wakasu &gt; ~/.kube/config.wakasu.kind
 75cat &lt;&lt;EOF | kubectl --kubeconfig=$<span class="org-variable-name">HOME</span>/.kube/config.wakasu.kind apply -f -
 76<span class="org-sh-heredoc">apiVersion: v1</span>
 77<span class="org-sh-heredoc">kind: ConfigMap</span>
 78<span class="org-sh-heredoc">metadata:</span>
 79<span class="org-sh-heredoc">  name: local-registry-hosting</span>
 80<span class="org-sh-heredoc">  namespace: kube-public</span>
 81<span class="org-sh-heredoc">data:</span>
 82<span class="org-sh-heredoc">  localRegistryHosting.v1: |</span>
 83<span class="org-sh-heredoc">    host: "localhost:5000"</span>
 84<span class="org-sh-heredoc">    help: "https://kind.sigs.k8s.io/docs/user/local-registry/"</span>
 85<span class="org-sh-heredoc">EOF</span>
 86</pre>
 87</div>
 88</div>
 89</section>
 90</main>
 91<footer id="postamble" class="status">
 92<footer>
 93     <small><a href="/" rel="history">Index</a><a href="/sitemap.html">Sitemap</a><a href="https://dl.sbr.pm/">Files</a></small><br/>
 94     <small class='questions'>Questions, comments ? Please use my <a href="https://lists.sr.ht/~vdemeester/public-inbox">public inbox</a> by sending a plain-text email to <a href="mailto:~vdemeester/public-inbox@lists.sr.ht">~vdemeester/public-inbox@lists.sr.ht</a>.</small><br/>
 95     <small class='copyright'>
 96      Content and design by Vincent Demeester
 97      (<a rel='licence' href='http://creativecommons.org/licenses/by-nc-sa/3.0/'>Some rights reserved</a>)
 98    </small><br />
 99</footer>
100</footer>
101</body>
102</html>