{ config, pkgs, lib, ... }: { environment.etc."rancher/k3s/registries.yaml".text = '' mirrors: "100.125.181.75:5000": endpoint: - http://100.125.181.75:5000/v2 configs: "100.125.181.75:5000": tls: insecure_skip_verify: true ''; swapDevices = lib.mkForce []; boot = { kernel.sysctl = { # Enable IP forwarding (required for pod networking) "net.ipv4.ip_forward" = 1; "net.ipv6.conf.all.forwarding" = 1; # Enable bridge netfilter (required for iptables rules on bridge traffic) "net.bridge.bridge-nf-call-iptables" = 1; "net.bridge.bridge-nf-call-ip6tables" = 1; }; }; environment.systemPackages = with pkgs; [ kubernetes-helm ]; boot.kernelModules = ["rbd" "nbd" "ceph"]; networking.firewall.enable = false; # networking.firewall.allowedTCPPorts = [ # 6443 # k3s: required so that pods can reach the API server # ]; # networking.firewall.allowedUDPPorts = [ # ]; services.k3s = { enable = true; role = "server"; # token = "jakeginesin12345678910"; tokenFile = config.age.secrets.kube.path; clusterInit = true; extraFlags = toString [ # "--bind-address=0.0.0.0" # API server listens on all interfaces # "--advertise-address=100.125.181.75" # Advertise this IP to cluster members # "--node-ip=100.125.181.75" # Primary IP for this node # "--node-external-ip=100.125.181.75" # External IP for services # "--tls-san=100.125.181.75" # Add IP to TLS certificate "--kubelet-arg=root-dir=/var/lib/kubelet" ]; }; }