# k3s daemon для muscari (single-node + Cilium CNI) # Traefik и servicelb остаются включены (встроенные в k3s) # Cilium ставится отдельно через Helm после старта k3s { config, pkgs, lib, ... }: { services.k3s = { enable = true; extraFlags = [ # CNI: отключаем встроенный flannel, ставим Cilium отдельно "--flannel-backend=none" "--disable-network-policy" # Cilium сам делает network policy # CIDR для подов и сервисов (default для k3s, но фиксируем явно) "--cluster-cidr=10.42.0.0/16" "--service-cidr=10.43.0.0/16" # TLS SANs для kubectl (если подключаемся не только по IP) "--tls-san=muscari.iscg.dev" ]; }; # Firewall: доверяем Cilium veth интерфейсам networking.firewall = { trustedInterfaces = [ "cali+" ]; checkReversePath = lib.mkDefault "loose"; }; # k3s-specific пакеты (НЕ в common — только для хостов с k3s) environment.systemPackages = with pkgs; [ kubectl kubernetes-helm kustomize sops # для шифрования k8s secrets (если будем через SOPS) ]; }