docs/presentation_kanzone.org

4.3 KiB

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!

/andreas/docs/media/commit/8555e9983041762b1552490399c76165a6fb2541/images/server.jpg

Men altså… how did we get here?

Men altså… how did we get here?

/andreas/docs/media/commit/8555e9983041762b1552490399c76165a6fb2541/images/minecraft.png

Bare-metal og vps!

!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

/andreas/docs/media/commit/8555e9983041762b1552490399c76165a6fb2541/images/baremetal.png

Docker! … og en del nginx og ruter-mikk…

!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

/andreas/docs/media/commit/8555e9983041762b1552490399c76165a6fb2541/images/docker.png

wireguard!

!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

/andreas/docs/media/commit/8555e9983041762b1552490399c76165a6fb2541/images/docker.png

veldig enkel måte å sette opp vpn på!

… er k8s løsningen?

/andreas/docs/media/commit/8555e9983041762b1552490399c76165a6fb2541/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

!pragma layout smetana

actor meg

package Vps {
   agent k8sController
}

package Hjemme {
  package Server {
    agent k8sAgent
  }
}

meg -> k8sController
k8sController <-> k8sAgent : wireguard

/andreas/docs/media/commit/8555e9983041762b1552490399c76165a6fb2541/images/kubeServer.png

boundary k8sController

package k8s {
  agent nginxIngress 
  agent nextcloud
}

k8sController -> nginxIngress
nginxIngress -> nextcloud

/andreas/docs/media/commit/8555e9983041762b1552490399c76165a6fb2541/images/kubeInternal.png

helm magic!

helm install <whatever> -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?

  k3d cluster delete
  k3d cluster create -p "8081:80@loadbalancer" --agents 2
  kubectl get nodes
  kubectl get pods -A -o wide
  helm repo add podinfo https://stefanprodan.github.io/podinfo

  helm install podinfo podinfo/podinfo --set ingress.enabled=true
  curl -H 'Host: podinfo.local' localhost:8081