diff --git a/images/baremetal.png b/images/baremetal.png new file mode 100644 index 0000000..5d58d29 Binary files /dev/null and b/images/baremetal.png differ diff --git a/images/docker.png b/images/docker.png new file mode 100644 index 0000000..86f0276 Binary files /dev/null and b/images/docker.png differ diff --git a/images/kubeInternal.png b/images/kubeInternal.png new file mode 100644 index 0000000..8a7e2bd Binary files /dev/null and b/images/kubeInternal.png differ diff --git a/images/kubeServer.png b/images/kubeServer.png new file mode 100644 index 0000000..6b1b346 Binary files /dev/null and b/images/kubeServer.png differ diff --git a/images/minecraft.png b/images/minecraft.png new file mode 100644 index 0000000..2a62050 Binary files /dev/null and b/images/minecraft.png differ diff --git a/images/server.jpg b/images/server.jpg new file mode 100644 index 0000000..83bedad Binary files /dev/null and b/images/server.jpg differ diff --git a/presentation_kanzone.org b/presentation_kanzone.org new file mode 100644 index 0000000..df9d819 --- /dev/null +++ b/presentation_kanzone.org @@ -0,0 +1,287 @@ +* Hvordan kjøre k8s cluster på hytta for fun and profit! + +* Hvordan kjøre k8s cluster på hytta for fun +and profit!+ and savings! + +* Hvordan kjøre k8s cluster på hytta for fun +and profit!+ +and savings!+ uh.... and FUN! + +[[./images/server.jpg]] + +* Men altså... how did we get here? + +* Men altså... how did we get here? + +[[./images/minecraft.png]] + +* Bare-metal og vps! + +#+begin_src plantuml :file images/baremetal.png +!pragma layout smetana + +actor meg + +package Vps { + agent vpsNginx +} + +package Hjemme { + + boundary ruter + + package Server { + + agent serverNginx + + agent nextcloud + + } + +} + + +meg -> vpsNginx + +vpsNginx -ri-> ruter : port-forward +ruter -ri-> serverNginx +serverNginx -> nextcloud +#+end_src + +#+RESULTS: +[[file:images/baremetal.png]] + +* Docker! ... og en del nginx og ruter-mikk... + +#+begin_src plantuml :file images/docker.png +!pragma layout smetana + +actor meg + +package Vps { + agent vpsNginx +} + +package Hjemme { + + boundary ruter + + package Server { + + agent serverNginx + + package Docker { + agent nextcloud + } + } +} + + +meg -> vpsNginx + +vpsNginx -ri-> ruter : port-forward +ruter -ri-> serverNginx +serverNginx -> nextcloud : expose-port +#+end_src + +#+RESULTS: +[[file:images/docker.png]] + +* wireguard! + +#+begin_src plantuml :file images/docker.png +!pragma layout smetana + +actor meg + +package Vps { + agent vpsNginx +} + +package Hjemme { + + package Server { + + agent serverNginx + + package Docker { + agent nextcloud + } + + } + +} + + +meg -> vpsNginx + +vpsNginx -ri-> serverNginx : wireguard +serverNginx -> nextcloud : expose-port +#+end_src + +#+RESULTS: +[[file:images/docker.png]] + + veldig enkel måte å sette opp vpn på! + +* ... er k8s løsningen? + +#+ATTR_ORG: :width 900 +[[./images/k8s-logo.png]] + + - Distribuert! + - Config management! + - Mer enn bare containere! + - og relevant for jobb! + +* Men hvilken distro skal jeg velge? + +* Men hvilken distro skal jeg velge? + +** standard / kubeadm + + - bare base k8s, + mangler mange componenter for å faktisk gjøre ting. + +** k0s + + - veldig lightweight, må sette opp en del selv. + +** Minikube + + - enkelt + - lager egen vm, kun 1 node + +** rancher rke & rke2 + + - Rke kjører over docker + - Rke2 var ikke stabilt når jeg startet + +** rancher k3s + + - egentlig laget for edge, men funker ganske greit for + større ting og har mye ute av boksen! + + - funker i litt mer utradisjonelle k8s miljø + +* Utfordring: NAT + +#+begin_src plantuml :file images/kubeServer.png +!pragma layout smetana + +actor meg + +package Vps { + agent k8sController +} + +package Hjemme { + package Server { + agent k8sAgent + } +} + +meg -> k8sController +k8sController <-> k8sAgent : wireguard + +#+end_src + +#+RESULTS: +[[file:images/kubeServer.png]] + +#+begin_src plantuml :file images/kubeInternal.png +boundary k8sController + +package k8s { + agent nginxIngress + agent nextcloud +} + +k8sController -> nginxIngress +nginxIngress -> nextcloud +#+end_src + +#+RESULTS: +[[file:images/kubeInternal.png]] + +* helm magic! + + =helm install -f config.yaml= + + https://artifacthub.io/ docker hub for helm! + +* Git-ops & fluxcd! + + Skriv yaml -> commit til git -> *k8s magic* -> deployed! + +* Så hva kjører jeg? + + - Nextcloud + - immich + - Gitea + - Drone cicd + - chat-bots + - archlinux pakke repo + - openldap + - bitwarden (vaultwarden) + - mail server + - jellyfin + - k8s componenter! + - k3s + - openebs + - cert-manager & trust-manager + - loki / prometheus / grafana + - container registry + - stakater-reloader + - nginx ingress controller + - FluxCD + +* Hva ville jeg gjort anderledes? + + - all config i git fra starten av! + - bruk gitops tidligere + +* Gode ressurser / Ting å google + +** Youtube + + - Jeff Geerling + - TechnoTim + - Just me and opensource + - Level1Techs + +** Reddit + + - /r/selfhosted + - /r/DataHoarder + - /r/homelab + - /r/HomeServer + - /r/k3s + - /r/rancher + - /r/linux + +** StackExchange + +** eller, spør meg! + +* Demo? + +#+begin_src bash :results drawer replace + k3d cluster delete + k3d cluster create -p "8081:80@loadbalancer" --agents 2 +#+end_src + +#+begin_src bash :results drawer replace + kubectl get nodes +#+end_src + +#+begin_src bash :results drawer replace + kubectl get pods -A -o wide +#+end_src + +#+begin_src bash :results drawer replace + helm repo add podinfo https://stefanprodan.github.io/podinfo + + helm install podinfo podinfo/podinfo --set ingress.enabled=true +#+end_src + +#+begin_src bash :results drawer replace + curl -H 'Host: podinfo.local' localhost:8081 +#+end_src