A ton of tweaks to fully spin up cluster from zero
Some checks failed
Lint / lint (push) Has been cancelled

This commit is contained in:
Gabriel Simmer 2024-07-09 11:41:10 +01:00
parent 124b319b57
commit 4a70446380
Signed by: arch
SSH key fingerprint: SHA256:m3OEcdtrnBpMX+2BDGh/byv3hrCekCLzDYMdvGEKPPQ
70 changed files with 349 additions and 11 deletions

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: atuin

View file

@ -4,3 +4,4 @@ resources:
- VaultAuth.yaml
- VaultStaticSecret-postgres-atuin.yaml
- deployment.yaml
- Namespace-atuin.yaml

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: authentik

View file

@ -13,3 +13,4 @@ resources:
- VaultAuth.yaml
- VaultStaticSecret-postgres-authentik.yaml
- VaultStaticSecret-authentik-secrets.yaml
- Namespace-authentik.yaml

View file

@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: cert-manager
labels:
pod-security.kubernetes.io/enforce: privileged

View file

@ -4,3 +4,7 @@ namespace: cert-manager
resources:
- VaultAuth.yaml
- VaultStaticSecret-cloudflare-cert-api.yaml
- ClusterIssuer-cloudflare.yaml
- https://github.com/cert-manager/cert-manager/releases/download/v1.15.1/cert-manager.yaml
patches:
- path: Namespace-cert-manager.yaml

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: cloudflare

View file

@ -12,7 +12,7 @@ ingress:
- hostname: authentik.gmem.ca
service: https://homelab.gmem.ca
- hostname: nitter.gmem.ca
service: https://homelab.gmem.ca
service: http://nitter.nitter.svc.cluster.local:8081
- hostname: git.gmem.ca
service: https://homelab.gmem.ca
- hostname: proxmox.gmem.ca

View file

@ -7,6 +7,7 @@ resources:
- VaultAuth.yaml
- VaultStaticSecret-tunnel-credentials.yaml
- VaultStaticSecret-cloudflare-exporter.yaml
- Namespace-cloudflare.yaml
configMapGenerator:
- name: cloudflared
@ -27,3 +28,4 @@ helmCharts:
labels:
release: prometheus
version: 0.2.1

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: duplikate

View file

@ -18,3 +18,4 @@ resources:
- Deployment-duplikate.yaml
- VaultAuth.yaml
- VaultStaticSecret-duplikate.yaml
- Namespace-duplikate.yaml

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: e6-gallery

View file

@ -7,6 +7,7 @@ spec:
destination:
create: true
name: regcred
type: kubernetes.io/dockerconfigjson
mount: kv
path: e6-gallery/regcred
refreshAfter: 30s

View file

@ -7,3 +7,4 @@ resources:
- VaultAuth.yaml
- VaultStaticSecret-regcred.yaml
- e6-gallery.yaml
- Namespace-e6-gallery.yaml

View file

@ -0,0 +1,12 @@
apiVersion: v1
kind: Endpoints
metadata:
name: photos
namespace: endpoints
subsets:
- addresses:
- ip: 192.168.50.229
ports:
- name: photos
port: 443
protocol: TCP

View file

@ -0,0 +1,23 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/proxy-body-size: 10g
name: photos
namespace: endpoints
spec:
rules:
- host: photos.gmem.ca
http:
paths:
- backend:
service:
name: photos
port:
number: 443
path: /
pathType: Prefix
tls:
- hosts:
- photos.gmem.ca

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: endpoints

View file

@ -0,0 +1,10 @@
apiVersion: v1
kind: Service
metadata:
name: photos
namespace: endpoints
spec:
ports:
- name: photos
port: 443
targetPort: 443

View file

@ -6,16 +6,20 @@ resources:
- Endpoints-ibiza.yaml
- Endpoints-proxmox.yaml
- Endpoints-tokyo.yaml
- Endpoints-photos.yaml
- Service-austin.yaml
- Service-git.yaml
- Service-ibiza.yaml
- Service-proxmox.yaml
- Service-tokyo.yaml
- Service-photos.yaml
- Ingress-austin.yaml
- Ingress-git.yaml
- Ingress-ibiza.yaml
- Ingress-proxmox.yaml
- Ingress-tokyo.yaml
- Ingress-photos.yaml
- Endpoints-secrets.yaml
- Ingress-secrets.yaml
- Service-secrets.yaml
- Namespace-endpoints.yaml

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: homepage

View file

@ -14,3 +14,4 @@ patches:
resources:
- ./VaultStaticSecret-homepage-config.yaml
- ./VaultAuth.yaml
- Namespace-homepage.yaml

View file

@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: ingress-nginx
labels:
pod-security.kubernetes.io/enforce: privileged

View file

@ -10,3 +10,5 @@ helmCharts:
kind: Kustomization
namespace: ingress-nginx
resources:
- Namespace-ingress-nginx.yaml

View file

@ -1,5 +1,11 @@
controller:
kind: DaemonSet
config:
enable-real-ip: "true"
use-proxy-protocol: "true"
enable-brotli: "true"
proxy-send-timeout: "30"
proxy-read-timeout: "30"
metrics:
enabled: true
serviceMonitor:

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: irc

View file

@ -14,8 +14,10 @@ resources:
- VaultAuth.yaml
- VaultStaticSecret-postgres-soju.yaml
- VaultStaticSecret-soju.yaml
- Namespace-irc.yaml
configMapGenerator:
- name: soju
files:
- config.in

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: jellyseerr

View file

@ -7,3 +7,4 @@ resources:
- VaultAuth.yaml
- VaultStaticSecret-jellyseerr.yaml
- ConfigMap-jellyseerr.yaml
- Namespace-jellyseerr.yaml

View file

@ -26,3 +26,4 @@ resources:
- vault-secrets-operator
- vaultwarden
- smarthome
- cert-manager

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: librespeed

View file

@ -4,3 +4,4 @@ resources:
- Deployment-librespeed.yaml
- Service-librespeed.yaml
- Ingress-librespeed.yaml
- Namespace-librespeed.yaml

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: metube

View file

@ -4,3 +4,4 @@ resources:
- Deployment-metube.yaml
- Service-metube.yaml
- Ingress-metube.yaml
- Namespace-metube.yaml

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: minecraft-invites

View file

@ -8,7 +8,7 @@ spec:
create: true
name: whitelistmanager
mount: kv
path: whitelistmanager/whitelistmanager
path: minecraft-invites/whitelistmanager
refreshAfter: 30s
type: kv-v2
vaultAuthRef: vault

View file

@ -8,3 +8,4 @@ resources:
- Ingress-whitelistmanager.yaml
- VaultAuth.yaml
- VaultStaticSecret-whitelistmanager.yaml
- Namespace-minecraft-invites.yaml

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: miniflux

View file

@ -1,5 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: miniflux
resources:
- Deployment-miniflux.yaml
- Service-miniflux.yaml
@ -7,6 +10,7 @@ resources:
- Ingress-miniflux.yaml
- VaultAuth.yaml
- VaultStaticSecret-miniflux.yaml
- Namespace-miniflux.yaml
configMapGenerator:
- name: miniflux

View file

@ -0,0 +1,101 @@
apiVersion: batch/v1
kind: CronJob
metadata:
name: router-cert
namespace: default
spec:
jobTemplate:
spec:
template:
spec:
volumes:
- secret:
secretName: router-gmem-ca
name: cert
containers:
- command:
- /bin/bash
- -c
- >
apt update && apt install -y curl
curl "https://healthchecks.gmem.ca/ping/${HEALTHCHECKS_UUID}/start"
export LOGIN=$(echo -n "${LOGIN_USERNAME}:${LOGIN_PASSWORD}" | base64 -w0)
curl "https://${BASE_URL}/login.cgi"
-H "Content-Type: application/x-www-form-urlencoded"
-H "Referer: https://${BASE_URL}/Main_Login.asp"
--data-urlencode "login_authorization=${LOGIN}"
-c /tmp/cookie.txt -k
curl "https://${BASE_URL}/upload_cert_key.cgi"
-H "Referer: https://${BASE_URL}/Advanced_ASUSDDNS_Content.asp"
-F "file_key=@/data/tls.key"
-F "file_cert=@/data/tls.crt"
-F "le_enable=2"
-b /tmp/cookie.txt -k
curl "https://${BASE_URL}/Logout.asp"
-H "Referer: https://${BASE_URL}/index.asp"
-b /tmp/cookie.txt -k
curl "https://healthchecks.gmem.ca/ping/${HEALTHCHECKS_UUID}"
envFrom:
- configMapRef:
name: router-cert
- secretRef:
name: router-cert
image: debian:bookworm-slim
name: upload-certificate
volumeMounts:
- mountPath: /data
name: cert
restartPolicy: Never
schedule: "0 0 1 * *"
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: router-gmem-ca
namespace: default
spec:
# Secret names are always required.
secretName: router-gmem-ca
duration: 2160h # 90d
renewBefore: 360h # 15d
dnsNames:
- router.gmem.ca
issuerRef:
name: le-issuer
# We can reference ClusterIssuers by changing the kind here.
# The default value is Issuer (i.e. a locally namespaced Issuer)
kind: ClusterIssuer
# This is optional since cert-manager will default to this value however
# if you are using an external issuer, change this to that issuer group.
group: cert-manager.io
---
apiVersion: v1
data:
BASE_URL: router.gmem.ca
kind: ConfigMap
metadata:
name: router-cert
namespace: default
---
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultStaticSecret
metadata:
name: router-cert
namespace: default
spec:
destination:
create: true
name: router-cert
mount: kv
path: default/router-cert
refreshAfter: 30s
type: kv-v2
vaultAuthRef: vault

View file

@ -0,0 +1,9 @@
apiVersion: v1
kind: Namespace
metadata:
name: ntfy
---
apiVersion: v1
kind: Namespace
metadata:
name: it-tools

View file

@ -0,0 +1,11 @@
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultAuth
metadata:
name: vault
namespace: default
spec:
kubernetes:
role: reader
serviceAccount: default
method: kubernetes
mount: kubernetes

View file

@ -1,7 +1,9 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- issuer.yml
- nginx-podmonitor.yml
- ntfy.yaml
- tools.yml
- Namespace-misc.yaml
- VaultAuth.yaml
- CronJob-router-cert.yaml

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: nfs-subdir-external-provisioner

View file

@ -9,3 +9,5 @@ helmCharts:
version: 4.0.18
kind: Kustomization
namespace: nfs-subdir-external-provisioner
resources:
- Namespace-nfs-subdir-external-provisioner.yaml

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: nitter

View file

@ -23,7 +23,7 @@ spec:
- secretRef:
name: nitter-bot
- configMapRef:
name: nitter-bot-5d9aefaae4
name: nitter-bot
image: git.gmem.ca/arch/nitter-bot:latest
name: nitter-bot
resources:

View file

@ -13,6 +13,7 @@ resources:
- VaultStaticSecret-nitter.yaml
- ConfigMap-nitter.yaml
- ConfigMap-nitter-bot.yaml
- Namespace-nitter.yaml
helmCharts:
- name: redis

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: piped

View file

@ -5,3 +5,4 @@ resources:
- CronJob-piped-refresh.yaml
- VaultAuth.yaml
- VaultStaticSecret-postgres-piped.yaml
- Namespace-piped.yaml

View file

@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: prometheus
labels:
pod-security.kubernetes.io/enforce: privileged

View file

@ -9,3 +9,4 @@ resources:
- VaultStaticSecret-nextdns-exporter.yaml
- VaultStaticSecret-nextdns-ts-exporter.yaml
- VaultStaticSecret-prometheus-remote-basic-auth.yaml
- Namespace-prometheus.yaml

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: redlib

View file

@ -4,4 +4,4 @@ resources:
- Deployment-redlib.yaml
- Service-redlib.yaml
- Ingress-redlib.yaml
- Namespace-redlib.yaml

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: searxng

View file

@ -23,9 +23,11 @@ resources:
- Ingress-searxng.yaml
- VaultAuth.yaml
- VaultStaticSecret-searxng.yaml
- Namespace-searxng.yaml
configMapGenerator:
- name: searxng
files:
- limiter.toml
- settings.yml

View file

@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: smarthome
labels:
pod-security.kubernetes.io/enforce: privileged

View file

@ -8,3 +8,4 @@ resources:
- hue.yaml
- VaultAuth.yaml
- VaultStaticSecret-hue.yaml
- Namespace-smarthome.yaml

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: tclip

View file

@ -6,3 +6,4 @@ resources:
- Ingress-tclip.yaml
- VaultAuth.yaml
- VaultStaticSecret-tclip.yaml
- Namespace-tclip.yaml

View file

@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: vault-secrets-operator
labels:
pod-security.kubernetes.io/enforce: privileged

View file

@ -23,4 +23,4 @@ roleRef:
subjects:
- kind: ServiceAccount
name: vault-auth
namespace: default
namespace: vault-secrets-operator

View file

@ -18,4 +18,4 @@ kind: Kustomization
namespace: vault-secrets-operator
resources:
- ./crb.yaml
- Namespace-vault-secrets-operator.yaml

View file

@ -0,0 +1,7 @@
apiVersion: authentication.k8s.io/v1
kind: TokenReview
metadata:
name: test
spec:
audiences: []
token: "eyJhbGciOiJSUzI1NiIsImtpZCI6ImpXVFI3MGdGTmJkRHN3MUVqdTNpOTZPeXZHNk1sNzYtS09pOTJwc09OdkEifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJ2YXVsdC1zZWNyZXRzLW9wZXJhdG9yIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6InZhdWx0LWF1dGgiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoidmF1bHQtYXV0aCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjQzNjdmMjBjLWZlOTAtNDIxMy04YmM2LTcwYjZiYThmNzJmYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDp2YXVsdC1zZWNyZXRzLW9wZXJhdG9yOnZhdWx0LWF1dGgifQ.SlQ3GUc9RUicbmcsH-qMzw231mansaG2OE-kZwLaYGyoFYNSt-kwW-GaUUdCQ3rB7fz4yADM_SCbOyczYGmhtm5hEUJxs4Vp_171RP8xfvphrbeGUxd5e5e0hv5vDFXtWQxLCkSwZX8sWymSpj01ujEqW9fJgDl9zGYsg7Yf94YaEEynYpU2ClamiFuPsmzu2yARYZEOaSTV_zq6TDjt6dojB63e5wYVODuJr_rOU1TNniQrL9SHBnIwFYTwM24cYP16rG8deV_yUaJE8BCTEUPXFv_vyh-RU3sQWQ1RuuCoDmxZqcQ5yiZ7dW7wcdP6FjKzbkrXB5Y7gni8Zl0WmIgJfZegnQktJIiHFZQaJAOE7V4b-NvYG6jb3HqtvtyHHXs92BS4jj9_B_M2TJb4Vv4fB7Y0v1ev39uOmMsPNkqp_SIhyOrlrjz7bvQAwcE9g5ew7QuNtcJN1ljF9s7dVJes8gjQjoOwKrk-S9GlLSPFk5jqt8e6WS85LO-3_hNliKECCWZar2z0L1SVOU7yrdguoH4ydligBwVemKotydnnmcYh6vdZOjhW5ZNoQwjclHDhTggCMvmWMuTnTRL-z_S8o2jYjmBEuo6EbTqgoT1NXmp8miT9mYkgE8JMM7IP-CD_HMfIYEWoKWRpwUX5SRkub6rELgMNVT6Xge_uQPk"

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: vaultwarden

View file

@ -18,8 +18,7 @@ spec:
emptyDir: {}
containers:
- name: vaultwarden
image: vaultwarden/server:testing
imagePullPolicy: Always
image: vaultwarden/server:1.31.0
resources:
limits:
memory: "128Mi"
@ -37,6 +36,8 @@ spec:
env:
- name: LOG_LEVEL
value: debug
- name: ROCKET_ADDRESS
value: "::"
ports:
- containerPort: 80
name: web

View file

@ -7,8 +7,10 @@ resources:
- VaultAuth.yaml
- VaultStaticSecret-vaultwarden.yaml
- deployment.yaml
- Namespace-vaultwarden.yaml
configMapGenerator:
- name: vaultwarden
envs:
- vaultwarden.env

View file

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: vrchat

View file

@ -8,7 +8,7 @@ spec:
create: true
name: vrchat-prometheus-adapter
mount: kv
path: vrchat-prometheus-adapter
path: vrchat/vrchat-prometheus-adapter
refreshAfter: 30s
type: kv-v2
vaultAuthRef: vault

View file

@ -8,8 +8,10 @@ resources:
- Service-vrchat-prometheus-adapter.yaml
- ServiceMonitor-vrchat-prometheus-adapter.yaml
- VaultAuth.yaml
- Namespace-vrchat.yaml
- VaultStaticSecret-vrchat-prometheus-adapter.yaml
configMapGenerator:
- name: vrchat-prometheus-adapter
files:
- config.toml