Skip to content

Commit b1ee287

Browse files
committed
feat(kubernetes): k3s based kubernetes for local dev and production
I'm developing my kubernetes cluster on GitHub in the 99linesofcode/kubernetes-base repository.
1 parent dcf4444 commit b1ee287

File tree

2 files changed

+46
-7
lines changed

2 files changed

+46
-7
lines changed

hosts/luna/default.nix

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,14 @@ in
5656
avahi.enable = true;
5757
bluetooth.enable = true;
5858
catt.enable = true;
59-
docker.enable = true;
59+
docker = {
60+
enable = true;
61+
rootless.enable = false;
62+
};
6063
graphics.enable = true;
6164
hyprland.enable = true;
6265
intel.enable = true;
66+
k3s.enable = true;
6367
nvidia.enable = true;
6468
power-management.enable = true;
6569
sound.enable = true;

modules/k3s.nix

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
{ config, lib, ... }:
1+
{
2+
config,
3+
lib,
4+
pkgs,
5+
...
6+
}:
27

38
let
49
cfg = config.host.k3s;
@@ -10,16 +15,46 @@ with lib;
1015
};
1116

1217
config = mkIf cfg.enable {
18+
environment.systemPackages = with pkgs; [
19+
kubernetes-helm
20+
];
21+
22+
environment.etc."kube/config" = {
23+
source = "/var/lib/rancher/k3s/server/cred/admin.kubeconfig";
24+
target = "/home/shorty/.kube/config";
25+
mode = "0600";
26+
user = "shorty";
27+
group = "users";
28+
};
29+
1330
services.k3s = {
1431
enable = true;
15-
role = "server";
16-
extraFlags = toString [
17-
"--debug" # optional arguments
32+
extraFlags = [
33+
"--disable=traefik"
34+
"--disable=servicelb"
35+
"--docker"
36+
"--write-kubeconfig-mode=0644"
1837
];
38+
role = "server";
39+
# autoDeployCharts = {
40+
# traefik = {
41+
# name = "traefik";
42+
# repo = "https://traefik.github.io/charts";
43+
# version = "36.1.0";
44+
# hash = "sha256-APQuQjKEpNwIaNi0RujZS1RcVLuPKC2PEXNLeM8/1F0=";
45+
# values = {
46+
# providers = {
47+
# kubernetesIngress.enabled = false;
48+
# kubernetesGateway.enabled = true;
49+
# };
50+
# gateway.namespacePolicy = "All";
51+
# };
52+
# };
53+
# };
1954
};
2055

21-
networking.firewall = {
22-
allowedTCPPorts = [
56+
networking = {
57+
firewall.allowedTCPPorts = [
2358
6443 # required so pods can reach API server
2459
];
2560
};

0 commit comments

Comments
 (0)