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