1 Commits

Author SHA1 Message Date
329687407d chore(deps): update gitea/act_runner docker tag to v0.2.13 2026-01-26 12:03:11 +00:00
23 changed files with 267 additions and 77 deletions

View File

@@ -48,12 +48,6 @@ Retrieve public/private keys (*store these on a **secure** location!*):
kubectl get secret -n kube-system -l sealedsecrets.bitnami.com/sealed-secrets-key -o yaml > BitnamiSealedSecrets.masterkey.yml
```
Restoring public/private keys:
```shell
kubectl apply -f BitnamiSealedSecrets.masterkey.yml
kubectl rollout restart deployment -n kube-system sealed-secrets-controller
```
### 5) Services
##### 5.1) [Gitea](https://gitea.io/) <small>(git repository)</small>
*Required for all other workloads*

View File

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

View File

@@ -0,0 +1,18 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: argus
namespace: argo-cd
spec:
destination:
namespace: argus
server: https://kubernetes.default.svc
project: default
syncPolicy:
automated: {}
syncOptions:
- CreateNamespace=true
sources:
- repoURL: https://code.spamasaurus.com/djpbessems/Kubernetes.K3s.installLog
path: services/Argus
targetRevision: HEAD

View File

@@ -0,0 +1,38 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: argus
namespace: argus
labels:
app: argus
spec:
replicas: 1
selector:
matchLabels:
app: argus
template:
metadata:
labels:
app: argus
spec:
serviceAccountName: argus
containers:
- name: argus
image: releaseargus/argus:0.21.0
args:
- -config.file=/app/config/config.yml
ports:
- name: web
containerPort: 8080
volumeMounts:
- name: csismb-argus-config
mountPath: /app/config
- name: csismb-argus-data
mountPath: /app/data
volumes:
- name: csismb-argus-config
persistentVolumeClaim:
claimName: csismb-argus-config
- name: csismb-argus-data
persistentVolumeClaim:
claimName: csismb-argus-data

View File

@@ -0,0 +1,18 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: argus
namespace: argus
spec:
entryPoints:
- websecure
routes:
- match: Host(`release.spamasaurus.com`)
kind: Rule
services:
- name: argus
port: 8080
middlewares:
- name: 2fa-authentication@file
- name: security-headers@file
# - name: compression@file

View File

@@ -0,0 +1,31 @@
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: smb.csi.k8s.io
name: csismb-argus-config
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: csismb-argus-config
mountOptions:
- dir_mode=0777
- file_mode=0777
- nobrl
- cache=strict
- mfsymlinks
- noserverino # required to prevent data corruption
csi:
driver: smb.csi.k8s.io
# volumeHandle format: {smb-server-address}#{sub-dir-name}#{share-name}
# make sure this value is unique for every share in the cluster
volumeHandle: 192.168.154.195#argus#config
volumeAttributes:
source: //192.168.154.195/K3s.Volumes
subDir: argus/config
nodeStageSecretRef:
name: smb-credentials
namespace: argus

View File

@@ -0,0 +1,31 @@
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: smb.csi.k8s.io
name: csismb-argus-data
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: csismb-argus-data
mountOptions:
- dir_mode=0777
- file_mode=0777
- nobrl
- cache=strict
- mfsymlinks
- noserverino # required to prevent data corruption
csi:
driver: smb.csi.k8s.io
# volumeHandle format: {smb-server-address}#{sub-dir-name}#{share-name}
# make sure this value is unique for every share in the cluster
volumeHandle: 192.168.154.195#argus#data
volumeAttributes:
source: //192.168.154.195/K3s.Volumes
subDir: argus/data
nodeStageSecretRef:
name: smb-credentials
namespace: argus

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: csismb-argus-config
namespace: argus
spec:
accessModes:
- ReadWriteMany
storageClassName: csismb-argus-config
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: csismb-argus-data
namespace: argus
spec:
accessModes:
- ReadWriteMany
storageClassName: csismb-argus-data
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,16 @@
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
creationTimestamp: null
name: smb-credentials
namespace: argus
spec:
encryptedData:
password: AgB8gU7Lj+Pn5B/oC8HtyKnKUzSvB7NRvxJOC2UmKjt3hj3pcRmfKrEh2khkcfSksb6x3f4ttIxYV2uFsXJfL4Wvi6zhsgvfgUHT12oD1/fuxD0LvHCm9otlGp8yyiQu5mPrFBdsGJswreBY53sD0UUdgu2riAlX0ESm+xKhzDJ6eSM8/Iz9Dq4GIhivLZ3OcZJw9hbgbelICIgvuxJZ3bWLfakPdeNDQUoayZuG3Z4GW0KPiqOMyaWz1/rljMHFaZHnFaszgKobwzPihsWWAnXEWmn54fwVBqfe/jNIo8CBvjlZGnMzinaS5lKTHObEVIG+F0XRI5VNFPa89NbsGKN71HJMFYU729lzdl58yy6B/5K789JRtxWUi/8I/7H8kLZWzUhUOqAcmLpVHKWnkH0Ub4MLtDyAaTJam5HqTtsvPDMW3+njiC+8vxC3n0X7q7pzAQQzM5JPZ7G/On6irFKe4LryfrphHiCB/gyJlLpBMXUqKJ4MvzUQU8G8e8W3OLMbtPl0O6oFuFxD8bUA4gdkoPO04bxlLvRmxlmavkbA0vFi60L6eyIOq5yzxvuEd7tzyD7SEO49hb8zW/LS/+H/PE/fCVT6crn+UbNOhgyaHR8pxlNpy6Z4PAti3mG8ZOtKVD0mx6fm8BCPHfWVFyC5YO6kNI285o4uuqsQI+SSZ+zkxwlFwvLcp1RdfJZFLUNyrQm3mlvMUY9xjZANlCHZ
username: AgB67La0V5HRLzZ1RqR0Y0nufYKq3z0SK/go4AQ0aaZwQEE/mIy0c6xhdkwup7ava4PzTyOavEEQoluhojOcrVTz9qKUHoMQHcnhS3NagBc/QCeA+2rL15qw9ZUn5+sSU4OhM3UNCTy2jF1kMoXr2cdCi9pALRdAXPLhrccPoaItmWkA4bMRIe3on78BQUOlhF+zJjcMciPlDo+9ywY8ArShMHj5YlRgWQ6uOJmIH5FFp2BcXKP5d0gALoVQ4/Ek4zIkk4YubtO1C0sqfbvkTW+oxeymUSLd2PddGyF18iohfrgje6PQAvvtkDBX2hUuVcp8h2oFj2JkeZld4neOYpDFbdKwe1aGep24GxbYIt24j+iFfs8txqXhQQsHJWJmwHNB2798gPvjIxPC+G90V4/drsjr7KiAgdWKUaqU5JMDVo2HTSplyWpS1LZIGQmloafWiAXvTWQVIEg2044TXQIq2X7k3npbHU/KcWmlMqR1546QawsZAnohWaOIskqEBkG7nXx/eeYk7LVppP2TqdRtt+VfuvptXgfFhkOB2wUSOwqWH7OkQu/k3jtPR0FVJni+Hc1/+fKfuStwvEX+/1bdjZuS8DUGelOb1d/pXrHw+KypfzXcOoDaO31hJMQOEalXZc2GNJleAvLAxv34s8fFWKWvnEXqwYIaNwRPvX64GtencJwyFo/rdO/HH7gVIhA2DCDQwB0=
template:
metadata:
creationTimestamp: null
name: smb-credentials
namespace: argus
type: Opaque

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: argus
namespace: argus
spec:
ports:
- protocol: TCP
name: web
port: 8080
selector:
app: argus

View File

@@ -0,0 +1,7 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: argus
namespace: argus
labels:
app: argus

View File

@@ -28,4 +28,4 @@ spec:
subDir: ddclient/config
nodeStageSecretRef:
name: smb-credentials
namespace: ddclient
namespace: argus

View File

@@ -22,7 +22,7 @@ spec:
- repoURL: https://dl.gitea.com/charts/
chart: gitea
# targetRevision: 11.0.0
targetRevision: 12.5.0
targetRevision: 12.4.0
helm:
valueFiles:
- $values/services/Gitea/values.yaml

View File

@@ -39,7 +39,7 @@ spec:
done
containers:
- name: act-runner
image: "gitea/act_runner:0.2.12"
image: "gitea/act_runner:0.2.13"
imagePullPolicy: IfNotPresent
command: ["sh", "-c", "while ! nc -z 127.0.0.1 2375 </dev/null; do echo 'waiting for docker daemon...'; sleep 5; done; /sbin/tini -- run.sh"]
workingDir: /data
@@ -70,15 +70,12 @@ spec:
- mountPath: /data
name: data-act-runner
- name: dind
# image: "docker:28.3.2-dind"
image: "docker:29.7.2-dind"
image: "docker:28.3.2-dind"
imagePullPolicy: IfNotPresent
args:
- dockerd
- --host=tcp://127.0.0.1:2375
- --host=unix:///var/run/docker.sock
- --mtu=1450
- --default-network-opt=bridge=com.docker.network.driver.mtu=1450
env:
- name: DOCKER_TLS_VERIFY
value: ""

View File

@@ -7,7 +7,7 @@ spec:
entryPoints:
- websecure
routes:
- match: Host(`bessems.com`) || Host(`bessems.eu`) || Host(`gabaldon.eu`) || Host(`gabaldon.nl`) || Host(`spamasaurus.com`)
- match: Host(`bessems.com`) || Host(`bessems.eu`) || Host(`gabaldon.eu`) || Host(`gabaldon.nl`) || Host(`sn.itch.fyi`) || Host(`spamasaurus.com`)
kind: Rule
services:
- name: lighttpd

View File

@@ -17,7 +17,7 @@ spec:
spec:
containers:
- name: app
image: neosmemo/memos:0.30
image: neosmemo/memos:0.25
imagePullPolicy: Always
env:
- name: MEMOS_PORT

View File

@@ -0,0 +1,57 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: kubectl-rolloutrestart
namespace: pvr
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: kubectl-rolloutrestart
namespace: pvr
rules:
- apiGroups: ["apps", "extensions"]
resources: ["deployments", "statefulsets"]
verbs: ["get", "list", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: kubectl-rolloutrestart-pvr
namespace: pvr
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubectl-rolloutrestart
subjects:
- kind: ServiceAccount
name: kubectl-rolloutrestart
namespace: pvr
---
apiVersion: batch/v1
kind: CronJob
metadata:
name: kubectl-rolloutrestart
namespace: pvr
spec:
concurrencyPolicy: Forbid
failedJobsHistoryLimit: 1
successfulJobsHistoryLimit: 1
schedule: '30 2 * * *'
jobTemplate:
spec:
backoffLimit: 2
activeDeadlineSeconds: 600
template:
spec:
serviceAccountName: kubectl-rolloutrestart
restartPolicy: Never
containers:
- name: kubectl
image: bitnami/kubectl
command:
- '/bin/bash'
- '-c'
args:
- for workload in `kubectl get deployments -n pvr --no-headers | cut -d " " -f 1`; do kubectl rollout restart deployment -n pvr $workload; done;
for workload in `kubectl get statefulsets -n pvr --no-headers | cut -d " " -f 1`; do kubectl rollout restart statefulsets -n pvr $workload; done;

View File

@@ -18,7 +18,8 @@ spec:
serviceAccountName: vaultwarden
containers:
- name: vaultwarden
image: vaultwarden/server:1.37.2
# image: vaultwarden/server:1.34.3
image: vaultwarden/server:1.35.2
env:
- name: ENABLE_DB_WAL
value: "false"

View File

@@ -13,7 +13,7 @@ spec:
sources:
- repoURL: https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts
chart: csi-driver-smb
targetRevision: 1.20.3
targetRevision: 1.19.1
helm:
valueFiles:
- $values/storage/csi-driver-smb/values.yaml

View File

@@ -14,7 +14,7 @@ spec:
targetRevision: HEAD
- repoURL: https://argoproj.github.io/argo-helm
chart: argo-cd
targetRevision: 9.3.7
targetRevision: 9.1.9
helm:
valueFiles:
- $values/system/ArgoCD/values.yaml

View File

@@ -1,58 +0,0 @@
apiVersion: network.harvesterhci.io/v1alpha1
kind: IPPool
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"network.harvesterhci.io/v1alpha1","kind":"IPPool","metadata":{"annotations":{},"name":"vmn-lan","namespace":"default"},"spec":{"ipv4Config":{"cidr":"192.168.154.0/24","dns":["192.168.154.200"],"leaseTime":86400,"pool":{"end":"192.168.154.99","exclude":["192.168.154.99"],"start":"192.168.154.50"},"router":"192.168.154.1","serverIP":"192.168.154.99"},"networkName":"default/vmn-lan"}}
creationTimestamp: "2025-12-29T22:22:23Z"
generation: 1
name: vmn-lan
namespace: default
resourceVersion: "277614389"
uid: 8400a6ec-9f7a-4570-934d-1ee3299e04aa
spec:
ipv4Config:
cidr: 192.168.154.0/24
dns:
- 192.168.154.150
leaseTime: 86400
pool:
end: 192.168.154.99
exclude:
- 192.168.154.99
start: 192.168.154.50
router: 192.168.154.1
serverIP: 192.168.154.99
networkName: default/vmn-lan
status:
agentPodRef:
image: rancher/harvester-vm-dhcp-agent:v1.7.0
name: default-vmn-lan-agent
namespace: harvester-system
uid: fde98493-a67c-4279-b48e-f7a70ea089b7
conditions:
- lastUpdateTime: "2025-12-29T22:22:23Z"
status: "True"
type: Registered
- lastUpdateTime: "2025-12-29T22:23:00Z"
status: "True"
type: CacheReady
- lastUpdateTime: "2025-12-29T22:22:26Z"
status: "True"
type: AgentReady
- lastUpdateTime: "2025-12-29T22:22:23Z"
status: "False"
type: Stopped
ipv4:
allocated:
192.168.154.50: ce:73:61:52:b7:35
192.168.154.56: d2:f6:70:98:42:6e
192.168.154.57: ea:ad:6d:52:3e:b9
192.168.154.58: 9a:b4:56:2d:57:7d
192.168.154.66: c2:a3:f7:c4:13:95
192.168.154.87: 0a:59:bb:81:a7:6d
192.168.154.98: 0a:15:10:a2:78:22
192.168.154.99: EXCLUDED
available: 42
used: 7
lastUpdate: "2025-12-30T05:10:35Z"

View File

@@ -11,7 +11,7 @@ spec:
syncPolicy:
automated: {}
sources:
- repoURL: https://bitnami.github.io/sealed-secrets
- repoURL: https://bitnami-labs.github.io/sealed-secrets
chart: sealed-secrets
targetRevision: 2.17.7
helm: