rke2 base config

This commit is contained in:
Evan Reichard 2025-01-25 11:50:54 -05:00
parent 0dd32db094
commit 1f91305b6e
3 changed files with 145 additions and 2 deletions

View File

@ -9,7 +9,7 @@ scp -r * nixos@10.10.10.10:/tmp/
## Partition Drives ## Partition Drives
```bash ```bash
# WARNING: Be sure to check drive mappings # Validate Disk
sudo fdisk -l sudo fdisk -l
# Partition Disk # Partition Disk
@ -17,7 +17,7 @@ sudo nix \
--experimental-features "nix-command flakes" \ --experimental-features "nix-command flakes" \
run github:nix-community/disko -- \ run github:nix-community/disko -- \
--mode disko \ --mode disko \
--flake /tmp#lin-va-llama1 --flake /tmp#lin-va-rke1
``` ```
## Install NixOS ## Install NixOS
@ -25,6 +25,7 @@ sudo nix \
```bash ```bash
# Install # Install
sudo nixos-install --flake /tmp#lin-va-llama1 sudo nixos-install --flake /tmp#lin-va-llama1
sudo nixos-install --flake /tmp#lin-va-rke1
# Reboot # Reboot
sudo reboot sudo reboot

View File

@ -8,6 +8,7 @@
outputs = { self, nixpkgs, disko }: { outputs = { self, nixpkgs, disko }: {
nixosConfigurations.lin-va-llama1 = nixpkgs.lib.nixosSystem { nixosConfigurations.lin-va-llama1 = nixpkgs.lib.nixosSystem {
# LLaMA C++ Server
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
disko.nixosModules.disko disko.nixosModules.disko
@ -18,6 +19,7 @@
]; ];
}; };
# K3s Server
nixosConfigurations.lin-va-k3s1 = nixpkgs.lib.nixosSystem { nixosConfigurations.lin-va-k3s1 = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
@ -28,5 +30,17 @@
} }
]; ];
}; };
# RKE2 Server
nixosConfigurations.lin-va-rke1 = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
disko.nixosModules.disko
./hosts/rke2.nix
{
networking.hostName = "lin-va-rke1";
}
];
};
}; };
} }

128
hosts/rke2.nix Normal file
View File

@ -0,0 +1,128 @@
{ config, pkgs, ... }:
{
# Enable Flakes
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# System Configuration
boot.kernelModules = [ "nvme_tcp" ]; # OpenEBS Mayastor Requirement
boot.kernel.sysctl = {
"vm.nr_hugepages" = 1024;
};
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.efi.efiSysMountPoint = "/boot";
# Disk Configuration
disko.devices = {
disk = {
nvme0n1 = {
type = "disk";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
boot = {
size = "512M";
type = "EF00"; # EFI
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
root = {
size = "100%";
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/";
};
};
};
};
};
};
};
# Network Configuration
networking = {
networkmanager.enable = true;
firewall = {
enable = true;
# https://docs.rke2.io/install/requirements#networking
allowedTCPPorts = [
# Control Plane
6443 # Kubernetes API
9345 # RKE2 supervisor API
2379 # etcd Client Port
2380 # etcd Peer Port
2381 # etcd Metrics Port
# Node Communication
10250 # kubelet metrics
9099 # Canal CNI health checks
];
allowedUDPPorts = [
8472 # Canal CNI with VXLAN
# 51820 # Canal CNI with WireGuard IPv4 (if using encryption)
# 51821 # Canal CNI with WireGuard IPv6 (if using encryption)
];
};
};
# Enable RKE2
services.rke2 = {
enable = true;
disable = [
"rke2-ingress-nginx"
];
# -------------------
# --- Server Node ---
# -------------------
role = "server";
# -------------------
# --- Worker Node ---
# -------------------
# role = "agent";
# serverAddr = "https://10.0.0.10:6443"
# tokenFile = "";
# agentTokenFile = "";
};
# Enable SSH Server
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = false; # Disable Password Login
PermitRootLogin = "prohibit-password"; # Disable Password Login
};
};
# User Configuration
users.users.root = {
openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEA8P84lWL/p13ZBFNwITm/dLWWL8s9pVmdOImM5gaJAiTLY+DheUvG6YsveB2/5STseiJ34g7Na9TW1mtTLL8zDqPvj3NbprQiYlLJKMbCk6dtfdD4nLMHl8B48e1h699XiZDp2/c+jJb0MkLOFrps+FbPqt7pFt1Pj29tFy8BCg0LGndu6KO+HqYS+aM5tp5hZESo1RReiJ8aHsu5X7wW46brN4gfyyu+8X4etSZAB9raWqlln9NKK7G6as6X+uPypvSjYGSTC8TSePV1iTPwOxPk2+1xBsK7EBLg3jNrrYaiXLnZvBOOhm11JmHzqEJ6386FfQO+0r4iDVxmvi+ojw== rsa-key-20141114"
];
hashedPassword = null; # Disable Password Login
};
# System Packages
environment.systemPackages = with pkgs; [
k9s
kubectl
kubernetes-helm
nfs-utils
vim
];
# System State Version
system.stateVersion = "24.11";
}