Initial commit: Ced's K3s HomeLab

This commit is contained in:
2025-12-06 22:22:42 -06:00
commit 188651954e
20 changed files with 1078 additions and 0 deletions
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
set -euo pipefail
echo "[Label] Ingress nodes 1-3"
kubectl label node k3s-node-1 ingress-node=true --overwrite
kubectl label node k3s-node-2 ingress-node=true --overwrite
kubectl label node k3s-node-3 ingress-node=true --overwrite
echo "[Label] Data nodes 4-6"
kubectl label node k3s-node-4 data-node=true --overwrite
kubectl label node k3s-node-5 data-node=true --overwrite
kubectl label node k3s-node-6 data-node=true --overwrite
echo "[Label] Monitoring nodes 7-9"
kubectl label node k3s-node-7 monitoring-node=true --overwrite
kubectl label node k3s-node-8 monitoring-node=true --overwrite
kubectl label node k3s-node-9 monitoring-node=true --overwrite
kubectl get nodes -L ingress-node -L data-node -L monitoring-node
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
set -euo pipefail
NAMESPACE=metallb-system
echo "[MetalLB] Installing CRDs & core components..."
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml
echo "[MetalLB] Waiting for pods..."
kubectl rollout status -n ${NAMESPACE} deploy/controller --timeout=180s || true
echo "[MetalLB] Applying IPAddressPool and L2Advertisement (10.10.30.251-10.10.30.254)..."
kubectl apply -f manifests/metallb/ipaddresspool.yaml
kubectl apply -f manifests/metallb/l2advertisement.yaml
kubectl get ipaddresspools.metallb.io -n ${NAMESPACE}
kubectl get l2advertisements.metallb.io -n ${NAMESPACE}
@@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -euo pipefail
NAMESPACE=ingress-nginx
echo "[Ingress] Adding Helm repo for ingress-nginx..."
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx >/dev/null 2>&1 || true
helm repo update
echo "[Ingress] Installing ingress-nginx (LoadBalancer, pinned to ingress-node=true)..."
helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx --namespace ${NAMESPACE} --create-namespace --set controller.service.type=LoadBalancer --set controller.nodeSelector.ingress-node="true"
kubectl get pods -n ${NAMESPACE}
kubectl get svc -n ${NAMESPACE} ingress-nginx-controller
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
set -euo pipefail
NAMESPACE=monitoring
echo "[NOC] Creating monitoring namespace (if not exists)..."
kubectl create namespace ${NAMESPACE} 2>/dev/null || true
echo "[NOC] Adding prometheus-community Helm repo..."
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts >/dev/null 2>&1 || true
helm repo update
echo "[NOC] Installing kube-prometheus-stack as 'ceds-noc'..."
helm upgrade --install ceds-noc prometheus-community/kube-prometheus-stack --namespace ${NAMESPACE} -f kube-prom-values.yaml
kubectl get pods -n ${NAMESPACE}
kubectl get svc -n ${NAMESPACE}