changeset 204:ad6e997fd323

prepare for k8s server host and registry host to change
author drewp@bigasterisk.com
date Fri, 30 Jun 2023 22:40:27 -0700
parents 3fd439ae1380
children 826db3c40fa7
files kube.py system.py templates/kube/podman_registries.conf.j2 templates/kube/registries.yaml.j2 templates/webforward.service.j2
diffstat 5 files changed, 48 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/kube.py	Fri Jun 30 22:39:13 2023 -0700
+++ b/kube.py	Fri Jun 30 22:40:27 2023 -0700
@@ -7,19 +7,11 @@
 
 is_pi = host.get_fact(LinuxDistribution)['name'] in ['Debian', 'Raspbian GNU/Linux']
 
-server_ip = "10.5.0.1"
-server_node = 'bang'
-nodes = ['slash', 'dash', 'ditto']  #, 'frontbed', 'garage']
-admin_from = ['bang', 'slash', 'dash', 'ditto']
-# https://github.com/k3s-io/k3s/releases
-# 1.23.6 per https://github.com/cilium/cilium/issues/20331
-k3s_version = 'v1.24.3+k3s1'
-
 # https://github.com/GoogleContainerTools/skaffold/releases
 skaffold_version = 'v2.6.0'
 
 
-def download_k3s():
+def download_k3s(k3s_version):
     tail = 'k3s' if host.get_fact(Arch) == 'x86_64' else 'k3s-armhf'
     files.download(
         src=f'https://github.com/rancher/k3s/releases/download/{k3s_version}/{tail}',
@@ -64,9 +56,12 @@
     if is_pi:
         pi_cgroup_setup()
 
+# don't try to get aufs-dkms on rpi-- https://github.com/docker/for-linux/issues/709
+def podman_insecure_registry(reg):
+    files.template(src='templates/kube/podman_registries.conf.j2', dest='/etc/containers/registries.conf.d/bang.conf', reg=reg)
 
-def config_and_run_service():
-    download_k3s()
+def config_and_run_service(k3s_version, server_node, server_ip):
+    download_k3s(k3s_version)
     service_name = 'k3s.service' if host.name == server_node else 'k3s-node.service'
     role = 'server' if host.name == server_node else 'agent'
     which_conf = 'config-server.yaml.j2' if host.name == server_node else 'config-agent.yaml.j2'
@@ -95,27 +90,43 @@
     systemd.service(service=service_name, daemon_reload=True, enabled=True, restarted=True)
 
 
-if host.name in nodes + [server_node]:
-    host_prep()
-    files.directory(path='/etc/rancher/k3s')
+def make_cluster(
+        server_ip = "10.5.0.1",
+        server_node = 'bang',
+        nodes = ['slash', 'dash', 'ditto'],
+        admin_from = ['bang', 'slash', 'dash', 'ditto'],
+        # https://github.com/k3s-io/k3s/releases
+        # 1.23.6 per https://github.com/cilium/cilium/issues/20331
+        k3s_version = 'v1.24.3+k3s1',
+        ):
+    if not is_pi:
+        podman_insecure_registry(reg='bang5:5000')
 
-    # docs: https://rancher.com/docs/k3s/latest/en/installation/private-registry/
-    # user confusions: https://github.com/rancher/k3s/issues/1802
-    files.template(src='templates/kube/registries.yaml.j2', dest='/etc/rancher/k3s/registries.yaml')
-    # also note that podman dropped the default `docker.io/` prefix on image names (see https://unix.stackexchange.com/a/701785/419418)
-    config_and_run_service()
+    if host.name in nodes + [server_node]:
+        host_prep()
+        files.directory(path='/etc/rancher/k3s')
 
-if host.name in admin_from:
-    files.directory(path='/etc/rancher/k3s')
-    install_skaffold()
-    files.link(path='/usr/local/bin/kubectl', target='/usr/local/bin/k3s')
-    files.directory(path='/home/drewp/.kube', user='drewp', group='drewp')
+        # docs: https://rancher.com/docs/k3s/latest/en/installation/private-registry/
+        # user confusions: https://github.com/rancher/k3s/issues/1802
+        files.template(src='templates/kube/registries.yaml.j2', dest='/etc/rancher/k3s/registries.yaml', reg='bang5:5000')
+        # also note that podman dropped the default `docker.io/` prefix on image names (see https://unix.stackexchange.com/a/701785/419418)
+        config_and_run_service(k3s_version, server_node, server_ip)
+
+    if host.name in admin_from:
+        files.directory(path='/etc/rancher/k3s')
+        install_skaffold()
+        files.link(path='/usr/local/bin/kubectl', target='/usr/local/bin/k3s')
+        files.directory(path='/home/drewp/.kube', user='drewp', group='drewp')
 
-    # assumes our pyinfra process is running on server_node
-    files.put(
-        src='/etc/rancher/k3s/k3s.yaml',
-        dest='/etc/rancher/k3s/k3s.yaml',  #
-        user='root',
-        group='drewp',
-        mode='640')
-    server.shell(f"kubectl config set-cluster default --server=https://{server_ip}:6443 --kubeconfig=/etc/rancher/k3s/k3s.yaml")
+        # assumes our pyinfra process is running on server_node
+        files.put(
+            src='/etc/rancher/k3s/k3s.yaml',
+            dest='/etc/rancher/k3s/k3s.yaml',  #
+            user='root',
+            group='drewp',
+            mode='640')
+        server.shell(f"kubectl config set-cluster default --server=https://{server_ip}:6443 --kubeconfig=/etc/rancher/k3s/k3s.yaml")
+
+
+make_cluster( server_ip = "10.5.0.1", server_node = 'bang', nodes = ['slash', 'dash', 'ditto'], admin_from = ['bang', 'slash', 'dash', 'ditto'], k3s_version = 'v1.24.3+k3s1')
+#make_cluster( server_ip = "10.5.0.7", server_node = 'ditto', nodes = ['slash', 'dash', 'bang'], admin_from = ['bang', 'slash', 'dash', 'ditto'], k3s_version = 'v1.25.11+k3s1')
--- a/system.py	Fri Jun 30 22:39:13 2023 -0700
+++ b/system.py	Fri Jun 30 22:40:27 2023 -0700
@@ -45,7 +45,7 @@
 
 def web_forward():
     for port in [80, 443]:
-        files.template(src="templates/webforward.service.j2", dest=f"/etc/systemd/system/web_forward_{port}.service", port=port)
+        files.template(src="templates/webforward.service.j2", dest=f"/etc/systemd/system/web_forward_{port}.service", pom_serv_host='bang', port=port)
         systemd.service(service=f'web_forward_{port}', enabled=True, restarted=True)
 
 server.hostname(hostname=host.name)
--- a/templates/kube/podman_registries.conf.j2	Fri Jun 30 22:39:13 2023 -0700
+++ b/templates/kube/podman_registries.conf.j2	Fri Jun 30 22:40:27 2023 -0700
@@ -1,3 +1,3 @@
 [[registry]]
-location = "bang5:5000"
+location = "{{reg}}"
 insecure = true
--- a/templates/kube/registries.yaml.j2	Fri Jun 30 22:39:13 2023 -0700
+++ b/templates/kube/registries.yaml.j2	Fri Jun 30 22:40:27 2023 -0700
@@ -1,6 +1,6 @@
 # written by pyinfra
 
 mirrors:
-  "bang5:5000":
+  "{{reg}}":
     endpoint:
-      - "http://bang5:5000"
+      - "http://{{reg}}"
--- a/templates/webforward.service.j2	Fri Jun 30 22:39:13 2023 -0700
+++ b/templates/webforward.service.j2	Fri Jun 30 22:40:27 2023 -0700
@@ -10,7 +10,7 @@
 [Service]
 Type=simple
 
-ExecStart=/usr/bin/socat tcp-listen:{{ port }},fork,reuseaddr tcp:bang:{{ port }}
+ExecStart=/usr/bin/socat tcp-listen:{{ port }},fork,reuseaddr tcp:{{pom_serv_host}}:{{ port }}
 
 [Install]
 WantedBy=multi-user.target