create VM running k3s

This commit is contained in:
Pim Kunis 2024-02-11 14:18:11 +01:00
parent 5865e8a95a
commit 03e816ff21
3 changed files with 33 additions and 7 deletions

View file

@ -56,7 +56,6 @@
}; };
}; };
# TODO: make leases persistent!
hermes = { hermes = {
type = "virtual"; type = "virtual";
hypervisorName = "lewis"; hypervisorName = "lewis";
@ -67,6 +66,7 @@
vm = { vm = {
# TODO: would be cool to create a check that a mac address is only ever assigned to one VM. # TODO: would be cool to create a check that a mac address is only ever assigned to one VM.
# TODO: idea: what if we generated these IDs by hashing the host name and reducing that to the amount of hosts possible?
id = 7; id = 7;
staticNetworking = true; staticNetworking = true;
staticIPv4 = config.lab.networking.dmz.ipv4.services; staticIPv4 = config.lab.networking.dmz.ipv4.services;
@ -125,4 +125,26 @@
}; };
}; };
}; };
k3s = {
type = "virtual";
hypervisorName = "atlas";
nixosModule = {
microvm.balloonMem = 7680;
lab = {
k3s.enable = true;
vm = {
id = 4;
shares = [{
name = "k3s";
mountPoint = "/var/lib/rancher/k3s";
}];
};
};
};
};
} }

View file

@ -10,13 +10,17 @@ in {
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
environment.systemPackages = [ pkgs.k3s ]; environment.systemPackages = with pkgs; [ k3s ];
networking.firewall.allowedTCPPorts = [ 6443 ];
networking = {
nftables.enable = lib.mkForce false;
firewall.enable = lib.mkForce false;
};
services.k3s = { services.k3s = {
enable = true; enable = true;
role = "server"; role = "server";
extraFlags = "--tls-san ${config.networking.fqdn} --data-dir ${config.lab.dataDisk.mountPoint}/k3s"; extraFlags = "--tls-san ${config.networking.fqdn} --snapshotter native";
}; };
system.activationScripts.k3s-bootstrap.text = system.activationScripts.k3s-bootstrap.text =
@ -26,7 +30,7 @@ in {
}).config.kubernetes.result; }).config.kubernetes.result;
in in
'' ''
ln -sf ${k3sBootstrapFile} ${config.lab.dataDisk.mountPoint}/k3s/server/manifests/k3s-bootstrap.json ln -sf ${k3sBootstrapFile} /var/lib/rancher/k3s/server/manifests/k3s-bootstrap.json
''; '';
}; };
} }

View file

@ -1,4 +1,4 @@
{ pkgs, config, lib, modulesPath, microvm, disko, agenix, machines, dns, ... }: { { pkgs, config, lib, modulesPath, microvm, disko, agenix, machines, dns, kubenix, ... }: {
imports = [ imports = [
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
microvm.nixosModules.host microvm.nixosModules.host
@ -62,7 +62,7 @@
(name: vm: (name: vm:
{ {
# TODO Simplify? # TODO Simplify?
specialArgs = { inherit agenix disko pkgs lib microvm dns; machine = vm; hypervisorConfig = config; }; specialArgs = { inherit agenix disko pkgs lib microvm dns kubenix; machine = vm; hypervisorConfig = config; };
config.imports = [ config.imports = [
./. ./.
{ networking.hostName = name; } { networking.hostName = name; }