Skip to content

Commit b17600c

Browse files
committed
Add initial configuration files and documentation for Kubernetes setup
0 parents  commit b17600c

151 files changed

Lines changed: 5482 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.envrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
use flake

.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
.venv/
2+
3+
*.iso
4+
*.log
5+
*.png
6+
*.tgz
7+
*kubeconfig.yaml
8+
Chart.lock
9+
site/
10+
*secret.yaml

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2025 fullstackjam
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

Makefile

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
.POSIX:
2+
.PHONY: *
3+
.EXPORT_ALL_VARIABLES:
4+
5+
KUBECONFIG = $(shell pwd)/metal/kubeconfig.yaml
6+
KUBE_CONFIG_PATH = $(KUBECONFIG)
7+
8+
default: metal system external smoke-test post-install
9+
10+
configure:
11+
./scripts/configure
12+
git status
13+
14+
metal:
15+
make -C metal
16+
17+
system:
18+
make -C system
19+
20+
external:
21+
make -C external
22+
23+
smoke-test:
24+
make -C test filter=Smoke
25+
26+
post-install:
27+
@./scripts/hacks
28+
29+
tools:
30+
@docker run \
31+
--rm \
32+
--interactive \
33+
--tty \
34+
--network host \
35+
--env "KUBECONFIG=${KUBECONFIG}" \
36+
--volume "/var/run/docker.sock:/var/run/docker.sock" \
37+
--volume $(shell pwd):$(shell pwd) \
38+
--volume ${HOME}/.ssh:/root/.ssh \
39+
--volume ${HOME}/.terraform.d:/root/.terraform.d \
40+
--volume homelab-tools-cache:/root/.cache \
41+
--volume homelab-tools-nix:/nix \
42+
--workdir $(shell pwd) \
43+
docker.io/nixos/nix nix --experimental-features 'nix-command flakes' develop
44+
45+
test:
46+
make -C test
47+
48+
49+
docs:
50+
mkdocs serve
51+
52+
git-hooks:
53+
pre-commit install

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# homelab
2+
This is a repository for my Kubernetes cluster. I try to adhere to metalstructure as Code (IaC) and GitOps practices using tools like Kubernetes, Argo, Renovate and GitHub Actions.

apps/excalidraw/Chart.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: v2
2+
name: excalidraw
3+
version: 0.0.0
4+
dependencies:
5+
- name: app-template
6+
version: 2.6.0
7+
repository: https://bjw-s.github.io/helm-charts

apps/excalidraw/values.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
app-template:
2+
controllers:
3+
main:
4+
replicas: 2
5+
containers:
6+
main:
7+
image:
8+
repository: docker.io/excalidraw/excalidraw
9+
tag: latest
10+
service:
11+
main:
12+
ports:
13+
http:
14+
port: 80
15+
protocol: HTTP
16+
ingress:
17+
main:
18+
enabled: true
19+
className: nginx
20+
annotations:
21+
cert-manager.io/cluster-issuer: letsencrypt-prod
22+
external-dns.alpha.kubernetes.io/target: homelab-tunnel.fullstackjam.com
23+
external-dns.alpha.kubernetes.io/cloudflare-proxied: 'true'
24+
hosts:
25+
- host: &host draw.fullstackjam.com
26+
paths:
27+
- path: /
28+
pathType: Prefix
29+
service:
30+
name: main
31+
port: http
32+
tls:
33+
- hosts:
34+
- *host
35+
secretName: excalidraw-tls-certificate

apps/speedtest/Chart.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: v2
2+
name: speedtest
3+
version: 0.0.0
4+
dependencies:
5+
- name: app-template
6+
version: 2.6.0
7+
repository: https://bjw-s.github.io/helm-charts

apps/speedtest/values.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
app-template:
2+
controllers:
3+
main:
4+
containers:
5+
main:
6+
image:
7+
repository: docker.io/openspeedtest/latest
8+
tag: latest
9+
service:
10+
main:
11+
ports:
12+
http:
13+
port: 3000
14+
protocol: HTTP
15+
ingress:
16+
main:
17+
enabled: true
18+
className: nginx
19+
annotations:
20+
nginx.ingress.kubernetes.io/proxy-body-size: 50m
21+
cert-manager.io/cluster-issuer: letsencrypt-prod
22+
external-dns.alpha.kubernetes.io/target: homelab-tunnel.fullstackjam.com
23+
external-dns.alpha.kubernetes.io/cloudflare-proxied: 'true'
24+
hosts:
25+
- host: &host speedtest.fullstackjam.com
26+
paths:
27+
- path: /
28+
pathType: Prefix
29+
service:
30+
name: main
31+
port: http
32+
tls:
33+
- hosts:
34+
- *host
35+
secretName: speedtest-tls-certificate

docs/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
mermaid*.js

0 commit comments

Comments
 (0)