Compare commits
363 Commits
renovate/c
...
6c5ce67961
| Author | SHA1 | Date | |
|---|---|---|---|
| 6c5ce67961 | |||
| b1f3337c98 | |||
| e610e96d80 | |||
| c9997fb8a7 | |||
| b9cc44d7e8 | |||
| be884d07c6 | |||
| 2875d84f33 | |||
| 573601a7ec | |||
| fb60744c5a | |||
| 52ca68c4ce | |||
| 0934a1130a | |||
| 3d28650c1b | |||
| 15063c9885 | |||
| ba3cb2571c | |||
| 5edaeb123c | |||
| 0dc37f69cb | |||
| 777239ccb5 | |||
| 352af6f386 | |||
| 230197e3c6 | |||
| 0c5e22f538 | |||
| e79386b4a5 | |||
| 8f4932132a | |||
| bb6272b16e | |||
| 3a71410c19 | |||
| e5af5c3945 | |||
| 6de56bfd10 | |||
| d70a704f89 | |||
| 5df94c4656 | |||
| a6772893d0 | |||
| ba31945337 | |||
| fcaa28c95a | |||
| a40f9a046a | |||
| 80ed3358e8 | |||
| eae4ff426c | |||
| 0fadd95386 | |||
| 29e06c60eb | |||
| 27ae162886 | |||
| d96344b310 | |||
| e3483fcfe3 | |||
| 784b335f65 | |||
| 9300e327df | |||
| 90fb555dc2 | |||
| 78b3b6b400 | |||
| 90897daa27 | |||
| 0368252850 | |||
| 1503c57fbe | |||
| 0f12840b35 | |||
| 87a071925c | |||
| b6efe42dc2 | |||
| d2cfd7b73d | |||
| bf1cae3fc7 | |||
| 6712e94237 | |||
| 6f8e10f3fc | |||
| 3c04fd6b10 | |||
| ef353d635a | |||
| 0097d057d5 | |||
| b454fc606f | |||
| 7feb19b7fc | |||
| b21f8e402b | |||
| 68f51b26b0 | |||
| 1095d7ef4d | |||
| 8d83c6dc83 | |||
| 65e75a4d39 | |||
| 6c7457d095 | |||
| 9b556e98a9 | |||
| 202ebc7b86 | |||
| ec61023f74 | |||
| 05d3493bb7 | |||
| 2a9f8c3092 | |||
| 226ee59fa6 | |||
| c8f34c45ac | |||
| c0fa400159 | |||
| 6ccb00e86e | |||
| 7b8fb8d8bb | |||
| 0ae3181267 | |||
| c0d83249b9 | |||
| 974d70a39e | |||
| 4518fc674a | |||
| c3912af26b | |||
| 797b97496e | |||
| 29457af188 | |||
| 2a8e56824e | |||
| f71794de4d | |||
| f4a865ce7a | |||
| e7b3b220aa | |||
| 0642d29ed5 | |||
| 3f044670e0 | |||
| 122770b128 | |||
| d894d42129 | |||
| 3426b1215d | |||
| 73a189f4e8 | |||
| 4518cdda22 | |||
| 3682e4d5bf | |||
| 3135514f6d | |||
| 5e39cc9082 | |||
| 6eed078d30 | |||
| 0bb805eaaa | |||
| c0f9670837 | |||
| 69728501e1 | |||
| 0a516b3798 | |||
| c9bb63b373 | |||
| 5b5043755d | |||
| e0fcaeaad4 | |||
| 102efd1254 | |||
| 5400c69771 | |||
| b6c70c9931 | |||
| 2710996a19 | |||
| 32f8ccfeb8 | |||
| 12aab2bf0e | |||
| 957b6dab43 | |||
| d1b30c7e61 | |||
| d880c342a5 | |||
| ae38951164 | |||
| 1e363acfca | |||
| c78ca0933c | |||
| 9a31c6bf15 | |||
| 45aa92fe10 | |||
| 708ffe203c | |||
| e2c75d2f22 | |||
| 3ceec2f10c | |||
| 95cfbfbe66 | |||
| bf9aefb44a | |||
| 5ffb171821 | |||
| a35116aa31 | |||
| b32337a2ba | |||
| d27b43715c | |||
| 4b0ce7a2e3 | |||
| 7f2ef7270c | |||
| 73a9b275a7 | |||
| 8a61a936c6 | |||
| 1c2f77927f | |||
| 4f5b25d910 | |||
| 7c5fafd54e | |||
| de11ec0d1b | |||
| 07c32643e7 | |||
| 9c61d47fda | |||
| 0f24f1dd7b | |||
| 83e5cada3f | |||
| ccf6302924 | |||
| 5eb0362788 | |||
| 0985832c2d | |||
| db86abff25 | |||
| a1b40a6a21 | |||
| 444c4faf96 | |||
| 9f304af879 | |||
| c0524510b8 | |||
| a26a351396 | |||
| 9269f21692 | |||
| 9d6a9ff304 | |||
| 3cd094007e | |||
| 94a57daaf8 | |||
| 6fec8d29a6 | |||
| 3a94da6021 | |||
| 70511ff9bc | |||
| e8b37d90d8 | |||
| 30b7a78360 | |||
| 2561b354d1 | |||
| 949d8b11db | |||
| 6c46b20dba | |||
| f0f9cb4d34 | |||
| 8386e21722 | |||
| c871dae045 | |||
| 70e4967497 | |||
| 8e68c45573 | |||
| c4628523bc | |||
| 071e87ee44 | |||
| 9e17aadb56 | |||
| 3ca4ddc233 | |||
| 215a2ac1fb | |||
| 5b8a861daa | |||
| 319e3bafbe | |||
| ad1c60a049 | |||
| 41020f8c79 | |||
| 60c7dd4bdc | |||
| 0fde3108d6 | |||
| a299c2cc2b | |||
| a4ea45a39c | |||
| 30bae60308 | |||
| 2f3b7af0da | |||
| 30efd5ae6e | |||
| 0e1279473f | |||
| 718a0d7e33 | |||
| 9765f1cf86 | |||
| 5f3a00b382 | |||
| b379c181f2 | |||
| e1801347f2 | |||
| d53db88fd2 | |||
| 5fb2bcfc7e | |||
| f5da3b52a2 | |||
| c3dbb0a608 | |||
| a520c62277 | |||
| 6cf45eda17 | |||
| 753d43b643 | |||
| 263b60018d | |||
| 0816b6e434 | |||
| 18eb912f03 | |||
| a2c23c5f97 | |||
| 15ce411c3e | |||
| 04a8c98d63 | |||
| f46219f87e | |||
| 53154eeed7 | |||
| 2ad310c550 | |||
| d32d94eb00 | |||
| 5b62f7e386 | |||
| 52124193e2 | |||
| 0f8ee9e53d | |||
| 122c70d0a8 | |||
| 5463d76771 | |||
| 60f2056806 | |||
| 6119ac7271 | |||
| 1a01f82e30 | |||
| 74c9ddad62 | |||
| caf62609d3 | |||
| d5622416de | |||
| 4183831d2f | |||
| ae6ed770a9 | |||
| 59d936d467 | |||
| 9b56ce5e4f | |||
| 2424ad440b | |||
| dff138ba31 | |||
| d95eb6f4ab | |||
| 5252f209f5 | |||
| e7348b2718 | |||
| c7cd2c5355 | |||
| 71e75afadb | |||
| 23169aa2ca | |||
| d8aa0a6a32 | |||
| a6630c0376 | |||
| 9056839784 | |||
| 1f8afa2f8e | |||
| e7b22509cd | |||
| e39574b60e | |||
| 197ceb6688 | |||
| 3e95a5edd1 | |||
| 10fe51f52d | |||
| e197cf5e5e | |||
| c54109dbf3 | |||
| 5a97e4b1d8 | |||
| 12cdfd96e2 | |||
| 7d2056b3ee | |||
| 35e579fc01 | |||
| 302613b76a | |||
| 89542df777 | |||
| 233466e2cd | |||
| 461f0589b3 | |||
| 5c16cd3a4b | |||
| 5cd5263d19 | |||
| a886e7c79c | |||
| dd676716f9 | |||
| 110ffa9c22 | |||
| 6ed7d61e21 | |||
| 051083cd6e | |||
| 87f2446cd1 | |||
| faa55fa069 | |||
| af29de91d6 | |||
| 5f3a775201 | |||
| 81f750e5e5 | |||
| 641e50b5e9 | |||
| 3fe8626391 | |||
| 94f851c607 | |||
| d2134ad554 | |||
| 22910085b7 | |||
| 6a4dee0852 | |||
| 49d5803b4f | |||
| b5c51f6720 | |||
| 3a8dbc6e0c | |||
| ead8be8bcb | |||
| f027dad029 | |||
| e35b8ccac8 | |||
| f69128b245 | |||
| d14b62f384 | |||
| ab7b8a6f26 | |||
| 8acc480b05 | |||
| 65834037ee | |||
| 1bf63168f2 | |||
| b3db332075 | |||
| b84c792992 | |||
| 947f154a81 | |||
| 1a88b1c602 | |||
| 55fce1fc36 | |||
| bb4afc0c07 | |||
| eb92a85cac | |||
| 8f70ae5f2e | |||
| f89a2fd1cc | |||
| b493ee9d77 | |||
| 8de0663571 | |||
| 3fc534f44b | |||
| 1c8ccd0fc4 | |||
| 847fd3557b | |||
| d2c2f5038f | |||
| afb9dcec65 | |||
| ba51980cec | |||
| e0eb26b63d | |||
| eda5ba08a0 | |||
| 318aedf89d | |||
| 7b9090afc1 | |||
| a109290c18 | |||
| f4b9742ab1 | |||
| b103358816 | |||
| 46cacb339d | |||
| 1e7dd52721 | |||
| 044cc37392 | |||
| 68ba891abc | |||
| 81ed455ff8 | |||
| b7c2da4419 | |||
| 4bc01e2e78 | |||
| 94d51de471 | |||
| dc0104c55d | |||
| 83be6619e8 | |||
| 48ccacefdd | |||
| cfeef90515 | |||
| ce0bef4970 | |||
| bd5fd97ed0 | |||
| 52641779bc | |||
| e98e02705d | |||
| 3c849f52f7 | |||
| 36187fff41 | |||
| 1ac7504585 | |||
| 879c013e89 | |||
| aa7fe8d3cf | |||
| fd280f1fca | |||
| 2ad381e35c | |||
| e63a285dc3 | |||
| 5336df3134 | |||
| 966639e3c8 | |||
| 97924a8064 | |||
| 37b78f079e | |||
| 0d17825eab | |||
| ffeecf65f6 | |||
| fea49ae167 | |||
| 6b6e7937c1 | |||
| 487baa2813 | |||
| fe2f79d13c | |||
| c3a747c03c | |||
| f1f6ffb9a0 | |||
| e851f6ab8c | |||
| 2ecd20c9d7 | |||
| bdb3bd3234 | |||
| 47e957e444 | |||
| b2dfb2dc0b | |||
| 6ccc964c87 | |||
| 5c7b258ccf | |||
| 351426f055 | |||
| ca598f9750 | |||
| 0cb93ce8a1 | |||
| 6fde991ba9 | |||
| 5f3840cc02 | |||
| d9a22723ef | |||
| f97a655ad5 | |||
| c2aacd0ef4 | |||
| f36ce88026 | |||
| d19d332b59 | |||
| 5cf9de7997 | |||
| 3c84632a2d | |||
| 14bcc8546c | |||
| ca8a63fdbe | |||
| 3a46d17f02 | |||
| add851ee9e | |||
| edbfd26bde | |||
| dea0dfb7cc | |||
| 874fc826cd | |||
| 33cb5c72c7 | |||
| 31df54fcf0 |
12
.envrc
Normal file
12
.envrc
Normal file
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
export DIRENV_WARN_TIMEOUT=20s
|
||||
|
||||
eval "$(devenv direnvrc)"
|
||||
|
||||
# `use devenv` supports the same options as the `devenv shell` command.
|
||||
#
|
||||
# To silence all output, use `--quiet`.
|
||||
#
|
||||
# Example usage: use devenv --quiet --impure --option services.postgres.enable:bool true
|
||||
use devenv
|
||||
12
.gitignore
vendored
12
.gitignore
vendored
@@ -1,2 +1,12 @@
|
||||
secrets.yaml
|
||||
talos/generated
|
||||
talos/generated
|
||||
# Devenv
|
||||
.devenv*
|
||||
devenv.local.nix
|
||||
devenv.local.yaml
|
||||
|
||||
# direnv
|
||||
.direnv
|
||||
|
||||
# pre-commit
|
||||
.pre-commit-config.yaml
|
||||
|
||||
6
.vscode/extensions.json
vendored
6
.vscode/extensions.json
vendored
@@ -1,3 +1,7 @@
|
||||
{
|
||||
"recommendations": ["arrterian.nix-env-selector", "jnoortheen.nix-ide"]
|
||||
"recommendations": [
|
||||
"jnoortheen.nix-ide",
|
||||
"detachhead.basedpyright",
|
||||
"mkhl.direnv"
|
||||
]
|
||||
}
|
||||
|
||||
12
.vscode/settings.json
vendored
12
.vscode/settings.json
vendored
@@ -1,12 +1,4 @@
|
||||
{
|
||||
"nixEnvSelector.nixFile": "${workspaceFolder}/shell.nix",
|
||||
"terminal.integrated.profiles.linux": {
|
||||
"Nix Shell": {
|
||||
"path": "nix",
|
||||
"args": ["develop"],
|
||||
"icon": "terminal-linux"
|
||||
}
|
||||
},
|
||||
"terminal.integrated.defaultProfile.linux": "Nix Shell",
|
||||
"ansible.python.interpreterPath": "/bin/python"
|
||||
"ansible.python.interpreterPath": "/bin/python",
|
||||
"python.defaultInterpreterPath": "${env:PYTHON_BIN}"
|
||||
}
|
||||
|
||||
12
Makefile
12
Makefile
@@ -3,7 +3,17 @@ install-router:
|
||||
|
||||
gen-talos-config:
|
||||
mkdir -p talos/generated
|
||||
talosctl gen config --with-secrets secrets.yaml --config-patch @talos/patches/controlplane.patch --config-patch @talos/patches/openebs.patch --config-patch @talos/patches/openbao.patch --config-patch @talos/patches/anapistula-delrosalae.patch --output-types controlplane -o talos/generated/anapistula-delrosalae.yaml homelab https://kube-api.homelab.lumpiasty.xyz:6443
|
||||
talosctl gen config \
|
||||
--with-secrets secrets.yaml \
|
||||
--config-patch @talos/patches/controlplane.patch \
|
||||
--config-patch @talos/patches/openebs.patch \
|
||||
--config-patch @talos/patches/openbao.patch \
|
||||
--config-patch @talos/patches/ollama.patch \
|
||||
--config-patch @talos/patches/llama.patch \
|
||||
--config-patch @talos/patches/frigate.patch \
|
||||
--config-patch @talos/patches/anapistula-delrosalae.patch \
|
||||
--output-types controlplane -o talos/generated/anapistula-delrosalae.yaml \
|
||||
homelab https://kube-api.homelab.lumpiasty.xyz:6443
|
||||
talosctl gen config --with-secrets secrets.yaml --config-patch @talos/patches/controlplane.patch --output-types worker -o talos/generated/worker.yaml homelab https://kube-api.homelab.lumpiasty.xyz:6443
|
||||
talosctl gen config --with-secrets secrets.yaml --output-types talosconfig -o talos/generated/talosconfig homelab https://kube-api.homelab.lumpiasty.xyz:6443
|
||||
talosctl config endpoint kube-api.homelab.lumpiasty.xyz
|
||||
|
||||
49
apps/frigate/config-pvc.yaml
Normal file
49
apps/frigate/config-pvc.yaml
Normal file
@@ -0,0 +1,49 @@
|
||||
apiVersion: local.openebs.io/v1alpha1
|
||||
kind: LVMVolume
|
||||
metadata:
|
||||
labels:
|
||||
kubernetes.io/nodename: anapistula-delrosalae
|
||||
name: frigate-config
|
||||
namespace: openebs
|
||||
spec:
|
||||
capacity: 5Gi
|
||||
ownerNodeID: anapistula-delrosalae
|
||||
shared: "yes"
|
||||
thinProvision: "no"
|
||||
vgPattern: ^openebs-hdd$
|
||||
volGroup: openebs-hdd
|
||||
---
|
||||
kind: PersistentVolume
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: frigate-config
|
||||
spec:
|
||||
capacity:
|
||||
storage: 5Gi
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
persistentVolumeReclaimPolicy: Retain
|
||||
storageClassName: openebs-lvmpv
|
||||
volumeMode: Filesystem
|
||||
csi:
|
||||
driver: local.csi.openebs.io
|
||||
volumeHandle: frigate-config
|
||||
claimRef:
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
namespace: frigate
|
||||
name: frigate-config
|
||||
---
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: frigate-config
|
||||
namespace: frigate
|
||||
spec:
|
||||
storageClassName: openebs-lvmpv
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 5Gi
|
||||
volumeName: frigate-config
|
||||
9
apps/frigate/kustomization.yaml
Normal file
9
apps/frigate/kustomization.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- secret.yaml
|
||||
- config-pvc.yaml
|
||||
- media-pvc.yaml
|
||||
- release.yaml
|
||||
- webrtc-svc.yaml
|
||||
49
apps/frigate/media-pvc.yaml
Normal file
49
apps/frigate/media-pvc.yaml
Normal file
@@ -0,0 +1,49 @@
|
||||
apiVersion: local.openebs.io/v1alpha1
|
||||
kind: LVMVolume
|
||||
metadata:
|
||||
labels:
|
||||
kubernetes.io/nodename: anapistula-delrosalae
|
||||
name: frigate-media
|
||||
namespace: openebs
|
||||
spec:
|
||||
capacity: 500Gi
|
||||
ownerNodeID: anapistula-delrosalae
|
||||
shared: "yes"
|
||||
thinProvision: "no"
|
||||
vgPattern: ^openebs-hdd$
|
||||
volGroup: openebs-hdd
|
||||
---
|
||||
kind: PersistentVolume
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: frigate-media
|
||||
spec:
|
||||
capacity:
|
||||
storage: 500Gi
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
persistentVolumeReclaimPolicy: Retain
|
||||
storageClassName: openebs-lvmpv
|
||||
volumeMode: Filesystem
|
||||
csi:
|
||||
driver: local.csi.openebs.io
|
||||
volumeHandle: frigate-media
|
||||
claimRef:
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
namespace: frigate
|
||||
name: frigate-media
|
||||
---
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: frigate-media
|
||||
namespace: frigate
|
||||
spec:
|
||||
storageClassName: openebs-lvmpv
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 500Gi
|
||||
volumeName: frigate-media
|
||||
5
apps/frigate/namespace.yaml
Normal file
5
apps/frigate/namespace.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: frigate
|
||||
181
apps/frigate/release.yaml
Normal file
181
apps/frigate/release.yaml
Normal file
@@ -0,0 +1,181 @@
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: blakeblackshear
|
||||
namespace: frigate
|
||||
spec:
|
||||
interval: 24h
|
||||
url: https://blakeblackshear.github.io/blakeshome-charts/
|
||||
---
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: frigate
|
||||
namespace: frigate
|
||||
spec:
|
||||
interval: 30m
|
||||
chart:
|
||||
spec:
|
||||
chart: frigate
|
||||
version: 7.8.0
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: blakeblackshear
|
||||
namespace: frigate
|
||||
interval: 12h
|
||||
values:
|
||||
config: |
|
||||
mqtt:
|
||||
enabled: False
|
||||
|
||||
tls:
|
||||
enabled: False
|
||||
|
||||
auth:
|
||||
enabled: True
|
||||
cookie_secure: True
|
||||
|
||||
record:
|
||||
expire_interval: 1440 # 24h
|
||||
sync_recordings: True
|
||||
enabled: True
|
||||
retain:
|
||||
days: 90
|
||||
mode: motion
|
||||
|
||||
objects:
|
||||
track:
|
||||
- person
|
||||
- bicycle
|
||||
- car
|
||||
- motorcycle
|
||||
- cat
|
||||
- dog
|
||||
- horse
|
||||
- sheep
|
||||
- cow
|
||||
- bear
|
||||
|
||||
review:
|
||||
alerts:
|
||||
labels:
|
||||
- person
|
||||
- bicycle
|
||||
- car
|
||||
- motorcycle
|
||||
- cat
|
||||
- dog
|
||||
- horse
|
||||
- sheep
|
||||
- cow
|
||||
- bear
|
||||
|
||||
cameras:
|
||||
dom:
|
||||
enabled: True
|
||||
ffmpeg:
|
||||
inputs:
|
||||
- path: rtsp://127.0.0.1:8554/dom
|
||||
roles:
|
||||
- audio
|
||||
- detect
|
||||
- record
|
||||
output_args:
|
||||
record: preset-record-generic-audio-copy
|
||||
motion:
|
||||
mask:
|
||||
# Sasiad
|
||||
- 0.436,0,0.421,0.072,0.424,0.124,0.304,0.242,0.295,0.194,0.035,0.497,0.035,0.6,0,0.664,0,0
|
||||
garaz:
|
||||
enabled: True
|
||||
ffmpeg:
|
||||
inputs:
|
||||
- path: rtsp://127.0.0.1:8554/garaz
|
||||
roles:
|
||||
- audio
|
||||
- detect
|
||||
- record
|
||||
output_args:
|
||||
record: preset-record-generic-audio-copy
|
||||
motion:
|
||||
mask:
|
||||
# Sasiad
|
||||
- 0.662,0.212,0.569,0.2,0.566,0.149,0.549,0.119,0.532,0.169,0.495,0.14,0.491,0,0.881,0,1,0.154,1,0.221,0.986,0.296,0.94,0.28,0.944,0.178,0.664,0.126
|
||||
# Drzewo
|
||||
- 0.087,0.032,0,0.174,0,0.508,0.139,0.226,0.12,0.108
|
||||
objects:
|
||||
filters:
|
||||
person:
|
||||
# Uparty false positive
|
||||
mask: 0.739,0.725,0.856,0.76,0.862,0.659,0.746,0.614
|
||||
|
||||
# ffmpeg:
|
||||
# hwaccel_args: preset-vaapi
|
||||
|
||||
detectors:
|
||||
ov_0:
|
||||
type: openvino
|
||||
device: CPU
|
||||
model:
|
||||
width: 300
|
||||
height: 300
|
||||
input_tensor: nhwc
|
||||
input_pixel_format: bgr
|
||||
path: /openvino-model/ssdlite_mobilenet_v2.xml
|
||||
labelmap_path: /openvino-model/coco_91cl_bkgr.txt
|
||||
|
||||
go2rtc:
|
||||
streams:
|
||||
dom:
|
||||
- rtsp://{FRIGATE_RTSP_DOM_USER}:{FRIGATE_RTSP_DOM_PASSWORD_URLENCODED}@192.168.3.10:554/Streaming/Channels/101
|
||||
garaz:
|
||||
- rtsp://{FRIGATE_RTSP_GARAZ_USER}:{FRIGATE_RTSP_GARAZ_PASSWORD_URLENCODED}@192.168.3.11:554/Streaming/Channels/101
|
||||
webrtc:
|
||||
candidates:
|
||||
- frigate-rtc.lumpiasty.xyz:8555
|
||||
persistence:
|
||||
media:
|
||||
enabled: true
|
||||
size: 500Gi
|
||||
storageClass: mayastor-single-hdd
|
||||
skipuninstall: true
|
||||
config:
|
||||
enabled: true
|
||||
size: 5Gi
|
||||
storageClass: mayastor-single-hdd
|
||||
skipuninstall: true
|
||||
envFromSecrets:
|
||||
- frigate-camera-rtsp
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
ingressClassName: nginx-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
hosts:
|
||||
- host: frigate.lumpiasty.xyz
|
||||
paths:
|
||||
- path: /
|
||||
portName: http-auth
|
||||
tls:
|
||||
- hosts:
|
||||
- frigate.lumpiasty.xyz
|
||||
secretName: frigate-ingress
|
||||
|
||||
nodeSelector:
|
||||
kubernetes.io/hostname: anapistula-delrosalae
|
||||
|
||||
# GPU access
|
||||
# extraVolumes:
|
||||
# - name: dri
|
||||
# hostPath:
|
||||
# path: /dev/dri/renderD128
|
||||
# type: CharDevice
|
||||
|
||||
# extraVolumeMounts:
|
||||
# - name: dri
|
||||
# mountPath: /dev/dri/renderD128
|
||||
|
||||
# securityContext:
|
||||
# # Not ideal
|
||||
# privileged: true
|
||||
43
apps/frigate/secret.yaml
Normal file
43
apps/frigate/secret.yaml
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: camera
|
||||
namespace: frigate
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultAuth
|
||||
metadata:
|
||||
name: camera
|
||||
namespace: frigate
|
||||
spec:
|
||||
method: kubernetes
|
||||
mount: kubernetes
|
||||
kubernetes:
|
||||
role: frigate-camera
|
||||
serviceAccount: camera
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultStaticSecret
|
||||
metadata:
|
||||
name: frigate-camera-rtsp
|
||||
namespace: frigate
|
||||
spec:
|
||||
type: kv-v2
|
||||
|
||||
mount: secret
|
||||
path: cameras
|
||||
|
||||
destination:
|
||||
create: true
|
||||
name: frigate-camera-rtsp
|
||||
type: Opaque
|
||||
transformation:
|
||||
excludeRaw: true
|
||||
templates:
|
||||
FRIGATE_RTSP_DOM_PASSWORD_URLENCODED:
|
||||
text: '{{ urlquery (get .Secrets "FRIGATE_RTSP_DOM_PASSWORD") }}'
|
||||
FRIGATE_RTSP_GARAZ_PASSWORD_URLENCODED:
|
||||
text: '{{ urlquery (get .Secrets "FRIGATE_RTSP_GARAZ_PASSWORD") }}'
|
||||
|
||||
vaultAuthRef: camera
|
||||
20
apps/frigate/webrtc-svc.yaml
Normal file
20
apps/frigate/webrtc-svc.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: go2rtc
|
||||
namespace: frigate
|
||||
spec:
|
||||
type: LoadBalancer
|
||||
selector:
|
||||
app.kubernetes.io/instance: frigate
|
||||
app.kubernetes.io/name: frigate
|
||||
ipFamilyPolicy: RequireDualStack
|
||||
ports:
|
||||
- name: webrtc-tcp
|
||||
protocol: TCP
|
||||
port: 8555
|
||||
targetPort: webrtc-tcp
|
||||
- name: webrtc-udp
|
||||
protocol: UDP
|
||||
port: 8555
|
||||
targetPort: webrtc-udp
|
||||
33
apps/gitea/backups.yaml
Normal file
33
apps/gitea/backups.yaml
Normal file
@@ -0,0 +1,33 @@
|
||||
apiVersion: k8up.io/v1
|
||||
kind: Schedule
|
||||
metadata:
|
||||
name: gitea-backup
|
||||
namespace: gitea
|
||||
spec:
|
||||
backend:
|
||||
# Manually adding secrets for now
|
||||
repoPasswordSecretRef:
|
||||
name: gitea-backup-restic
|
||||
key: password
|
||||
s3:
|
||||
endpoint: https://s3.eu-central-003.backblazeb2.com
|
||||
bucket: lumpiasty-backups
|
||||
accessKeyIDSecretRef:
|
||||
name: gitea-backup-backblaze
|
||||
key: aws_access_key_id
|
||||
secretAccessKeySecretRef:
|
||||
name: gitea-backup-backblaze
|
||||
key: aws_secret_access_key
|
||||
backup:
|
||||
schedule: "@daily-random"
|
||||
failedJobsHistoryLimit: 2
|
||||
successfulJobsHistoryLimit: 2
|
||||
check:
|
||||
schedule: "@daily-random"
|
||||
prune:
|
||||
schedule: "@daily-random"
|
||||
retention:
|
||||
keepLast: 14
|
||||
keepDaily: 14
|
||||
keepWeekly: 50
|
||||
keepYearly: 10
|
||||
9
apps/gitea/kustomization.yaml
Normal file
9
apps/gitea/kustomization.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- postgres-volume.yaml
|
||||
- postgres-cluster.yaml
|
||||
- release.yaml
|
||||
- secret.yaml
|
||||
- backups.yaml
|
||||
5
apps/gitea/namespace.yaml
Normal file
5
apps/gitea/namespace.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: gitea
|
||||
16
apps/gitea/postgres-cluster.yaml
Normal file
16
apps/gitea/postgres-cluster.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: Cluster
|
||||
metadata:
|
||||
name: gitea-postgresql-cluster
|
||||
namespace: gitea
|
||||
spec:
|
||||
instances: 1
|
||||
|
||||
storage:
|
||||
size: 10Gi
|
||||
storageClass: mayastor-single-hdd
|
||||
|
||||
backup:
|
||||
volumeSnapshot:
|
||||
className: csi-mayastor-snapshotclass
|
||||
32
apps/gitea/postgres-volume.yaml
Normal file
32
apps/gitea/postgres-volume.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
apiVersion: local.openebs.io/v1alpha1
|
||||
kind: LVMVolume
|
||||
metadata:
|
||||
labels:
|
||||
kubernetes.io/nodename: anapistula-delrosalae
|
||||
name: gitea-postgresql-cluster-lvmhdd-1
|
||||
namespace: openebs
|
||||
spec:
|
||||
capacity: 20Gi
|
||||
ownerNodeID: anapistula-delrosalae
|
||||
shared: "yes"
|
||||
thinProvision: "no"
|
||||
vgPattern: ^openebs-hdd$
|
||||
volGroup: openebs-hdd
|
||||
---
|
||||
kind: PersistentVolume
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: gitea-postgresql-cluster-lvmhdd-1
|
||||
spec:
|
||||
capacity:
|
||||
storage: 20Gi
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
persistentVolumeReclaimPolicy: Retain
|
||||
storageClassName: openebs-lvmpv
|
||||
volumeMode: Filesystem
|
||||
csi:
|
||||
driver: local.csi.openebs.io
|
||||
volumeHandle: gitea-postgresql-cluster-lvmhdd-1
|
||||
---
|
||||
# PVCs are dynamically created by the Postgres operator
|
||||
@@ -1,9 +1,3 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: gitea
|
||||
---
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
@@ -23,7 +17,7 @@ spec:
|
||||
chart:
|
||||
spec:
|
||||
chart: gitea
|
||||
version: 10.6.0
|
||||
version: 12.5.0
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: gitea-charts
|
||||
@@ -34,7 +28,7 @@ spec:
|
||||
enabled: false
|
||||
|
||||
postgresql:
|
||||
enabled: true
|
||||
enabled: false
|
||||
primary:
|
||||
persistence:
|
||||
enabled: true
|
||||
@@ -43,12 +37,12 @@ spec:
|
||||
requests:
|
||||
cpu: 0
|
||||
|
||||
redis-cluster:
|
||||
valkey-cluster:
|
||||
enabled: false
|
||||
|
||||
redis:
|
||||
valkey:
|
||||
enabled: true
|
||||
master:
|
||||
primary:
|
||||
persistence:
|
||||
enabled: true
|
||||
storageClass: mayastor-single-hdd
|
||||
@@ -60,13 +54,19 @@ spec:
|
||||
enabled: true
|
||||
storageClass: mayastor-single-hdd
|
||||
|
||||
image:
|
||||
tag: 1.23.3
|
||||
|
||||
gitea:
|
||||
additionalConfigFromEnvs:
|
||||
- name: GITEA__DATABASE__PASSWD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: gitea-postgresql-cluster-app
|
||||
key: password
|
||||
config:
|
||||
database:
|
||||
DB_TYPE: postgres
|
||||
HOST: gitea-postgresql-cluster-rw:5432
|
||||
NAME: app
|
||||
USER: app
|
||||
indexer:
|
||||
ISSUE_INDEXER_TYPE: bleve
|
||||
REPO_INDEXER_ENABLED: true
|
||||
@@ -79,8 +79,8 @@ spec:
|
||||
ssh:
|
||||
annotations:
|
||||
lbipam.cilium.io/sharing-key: gitea
|
||||
lbipam.cilium.io/sharing-cross-namespace: nginx-ingress-controller
|
||||
lbipam.cilium.io/ips: 10.44.0.0,2001:470:61a3:400::1
|
||||
lbipam.cilium.io/sharing-cross-namespace: nginx-ingress
|
||||
lbipam.cilium.io/ips: 10.44.0.6,2001:470:61a3:400::6
|
||||
type: LoadBalancer
|
||||
port: 22
|
||||
# Requirement for sharing ip with other service
|
||||
@@ -89,7 +89,7 @@ spec:
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
className: nginx-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
acme.cert-manager.io/http01-edit-in-place: "true"
|
||||
@@ -111,37 +111,3 @@ spec:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 0
|
||||
---
|
||||
apiVersion: k8up.io/v1
|
||||
kind: Schedule
|
||||
metadata:
|
||||
name: gitea-backup
|
||||
namespace: gitea
|
||||
spec:
|
||||
backend:
|
||||
# Manually adding secrets for now
|
||||
repoPasswordSecretRef:
|
||||
name: restic-repo
|
||||
key: password
|
||||
s3:
|
||||
endpoint: https://s3.eu-central-003.backblazeb2.com
|
||||
bucket: lumpiasty-backups
|
||||
accessKeyIDSecretRef:
|
||||
name: backblaze
|
||||
key: keyid
|
||||
secretAccessKeySecretRef:
|
||||
name: backblaze
|
||||
key: secret
|
||||
backup:
|
||||
schedule: "@daily-random"
|
||||
failedJobsHistoryLimit: 2
|
||||
successfulJobsHistoryLimit: 2
|
||||
check:
|
||||
schedule: "@daily-random"
|
||||
prune:
|
||||
schedule: "@daily-random"
|
||||
retention:
|
||||
keepLast: 14
|
||||
keepDaily: 14
|
||||
keepWeekly: 50
|
||||
keepYearly: 10
|
||||
58
apps/gitea/secret.yaml
Normal file
58
apps/gitea/secret.yaml
Normal file
@@ -0,0 +1,58 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: backup
|
||||
namespace: gitea
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultAuth
|
||||
metadata:
|
||||
name: backup
|
||||
namespace: gitea
|
||||
spec:
|
||||
method: kubernetes
|
||||
mount: kubernetes
|
||||
kubernetes:
|
||||
role: backup
|
||||
serviceAccount: backup
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultStaticSecret
|
||||
metadata:
|
||||
name: gitea-backup-restic
|
||||
namespace: gitea
|
||||
spec:
|
||||
type: kv-v2
|
||||
|
||||
mount: secret
|
||||
path: restic
|
||||
|
||||
destination:
|
||||
create: true
|
||||
name: gitea-backup-restic
|
||||
type: Opaque
|
||||
transformation:
|
||||
excludeRaw: true
|
||||
|
||||
vaultAuthRef: backup
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultStaticSecret
|
||||
metadata:
|
||||
name: gitea-backup-backblaze
|
||||
namespace: gitea
|
||||
spec:
|
||||
type: kv-v2
|
||||
|
||||
mount: secret
|
||||
path: backblaze
|
||||
|
||||
destination:
|
||||
create: true
|
||||
name: gitea-backup-backblaze
|
||||
type: Opaque
|
||||
transformation:
|
||||
excludeRaw: true
|
||||
|
||||
vaultAuthRef: backup
|
||||
9
apps/immich/kustomization.yaml
Normal file
9
apps/immich/kustomization.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- volume.yaml
|
||||
- redis.yaml
|
||||
- postgres-password.yaml
|
||||
- postgres-cluster.yaml
|
||||
- release.yaml
|
||||
4
apps/immich/namespace.yaml
Normal file
4
apps/immich/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: immich
|
||||
32
apps/immich/postgres-cluster.yaml
Normal file
32
apps/immich/postgres-cluster.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: Cluster
|
||||
metadata:
|
||||
name: immich-db
|
||||
namespace: immich
|
||||
spec:
|
||||
imageName: ghcr.io/tensorchord/cloudnative-vectorchord:14-0.4.3
|
||||
|
||||
instances: 1
|
||||
|
||||
storage:
|
||||
size: 10Gi
|
||||
storageClass: mayastor-single-hdd
|
||||
bootstrap:
|
||||
initdb:
|
||||
# Defaults of immich chart
|
||||
database: immich
|
||||
owner: immich
|
||||
|
||||
# We need to create custom role because default one does not allow to set up
|
||||
# vectorchord extension
|
||||
managed:
|
||||
roles:
|
||||
- name: immich
|
||||
createdb: true
|
||||
login: true
|
||||
superuser: true
|
||||
# We need to manually create secret
|
||||
# https://github.com/cloudnative-pg/cloudnative-pg/issues/3788
|
||||
passwordSecret:
|
||||
name: immich-db-immich
|
||||
38
apps/immich/postgres-password.yaml
Normal file
38
apps/immich/postgres-password.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: immich-password
|
||||
namespace: immich
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultAuth
|
||||
metadata:
|
||||
name: immich
|
||||
namespace: immich
|
||||
spec:
|
||||
method: kubernetes
|
||||
mount: kubernetes
|
||||
kubernetes:
|
||||
role: immich
|
||||
serviceAccount: immich-password
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultStaticSecret
|
||||
metadata:
|
||||
name: immich-db
|
||||
namespace: immich
|
||||
spec:
|
||||
type: kv-v2
|
||||
|
||||
mount: secret
|
||||
path: immich-db
|
||||
|
||||
destination:
|
||||
create: true
|
||||
name: immich-db-immich
|
||||
type: kubernetes.io/basic-auth
|
||||
transformation:
|
||||
excludeRaw: true
|
||||
|
||||
vaultAuthRef: immich
|
||||
29
apps/immich/redis.yaml
Normal file
29
apps/immich/redis.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: bitnami
|
||||
namespace: immich
|
||||
spec:
|
||||
interval: 24h
|
||||
type: "oci"
|
||||
url: oci://registry-1.docker.io/bitnamicharts/
|
||||
---
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: redis
|
||||
namespace: immich
|
||||
spec:
|
||||
interval: 30m
|
||||
chart:
|
||||
spec:
|
||||
chart: redis
|
||||
version: 24.1.3
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: bitnami
|
||||
values:
|
||||
global:
|
||||
defaultStorageClass: mayastor-single-hdd
|
||||
architecture: standalone
|
||||
69
apps/immich/release.yaml
Normal file
69
apps/immich/release.yaml
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: secustor
|
||||
namespace: immich
|
||||
spec:
|
||||
interval: 24h
|
||||
url: https://secustor.dev/helm-charts
|
||||
---
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: immich
|
||||
namespace: immich
|
||||
spec:
|
||||
interval: 30m
|
||||
chart:
|
||||
spec:
|
||||
chart: immich
|
||||
version: 1.0.12
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: secustor
|
||||
values:
|
||||
common:
|
||||
config:
|
||||
vecotrExtension: vectorchord
|
||||
postgres:
|
||||
host: immich-db-rw
|
||||
existingSecret:
|
||||
enabled: true
|
||||
secretName: immich-db-immich
|
||||
usernameKey: username
|
||||
passwordKey: password
|
||||
redis:
|
||||
host: redis-master
|
||||
existingSecret:
|
||||
enabled: true
|
||||
secretName: redis
|
||||
passwordKey: redis-password
|
||||
|
||||
server:
|
||||
volumeMounts:
|
||||
- mountPath: /usr/src/app/upload
|
||||
name: uploads
|
||||
volumes:
|
||||
- name: uploads
|
||||
persistentVolumeClaim:
|
||||
claimName: library
|
||||
|
||||
machineLearning:
|
||||
enabled: true
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||
hosts:
|
||||
- host: immich.lumpiasty.xyz
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
tls:
|
||||
- hosts:
|
||||
- immich.lumpiasty.xyz
|
||||
secretName: immich-ingress
|
||||
13
apps/immich/volume.yaml
Normal file
13
apps/immich/volume.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: library
|
||||
namespace: immich
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 150Gi
|
||||
storageClassName: mayastor-single-hdd
|
||||
7
apps/ispeak3/kustomization.yaml
Normal file
7
apps/ispeak3/kustomization.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- pvc.yaml
|
||||
- statefulset.yaml
|
||||
- service.yaml
|
||||
4
apps/ispeak3/namespace.yaml
Normal file
4
apps/ispeak3/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: ispeak3
|
||||
49
apps/ispeak3/pvc.yaml
Normal file
49
apps/ispeak3/pvc.yaml
Normal file
@@ -0,0 +1,49 @@
|
||||
apiVersion: local.openebs.io/v1alpha1
|
||||
kind: LVMVolume
|
||||
metadata:
|
||||
labels:
|
||||
kubernetes.io/nodename: anapistula-delrosalae
|
||||
name: ispeak3-ts3-data
|
||||
namespace: openebs
|
||||
spec:
|
||||
capacity: 1Gi
|
||||
ownerNodeID: anapistula-delrosalae
|
||||
shared: "yes"
|
||||
thinProvision: "no"
|
||||
vgPattern: ^openebs-hdd$
|
||||
volGroup: openebs-hdd
|
||||
---
|
||||
kind: PersistentVolume
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: ispeak3-ts3-data
|
||||
spec:
|
||||
capacity:
|
||||
storage: 1Gi
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
persistentVolumeReclaimPolicy: Delete
|
||||
storageClassName: openebs-lvmpv
|
||||
volumeMode: Filesystem
|
||||
csi:
|
||||
driver: local.csi.openebs.io
|
||||
volumeHandle: ispeak3-ts3-data
|
||||
claimRef:
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
namespace: ispeak3
|
||||
name: ispeak3-ts3-data
|
||||
---
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: ispeak3-ts3-data
|
||||
namespace: ispeak3
|
||||
spec:
|
||||
storageClassName: openebs-lvmpv
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
volumeName: ispeak3-ts3-data
|
||||
20
apps/ispeak3/service.yaml
Normal file
20
apps/ispeak3/service.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: teamspeak3
|
||||
namespace: ispeak3
|
||||
spec:
|
||||
selector:
|
||||
app: teamspeak3
|
||||
ports:
|
||||
- name: voice
|
||||
protocol: UDP
|
||||
port: 9987
|
||||
targetPort: 9987
|
||||
- name: filetransfer
|
||||
protocol: TCP
|
||||
port: 30033
|
||||
targetPort: 30033
|
||||
type: LoadBalancer
|
||||
externalTrafficPolicy: Local
|
||||
ipFamilyPolicy: PreferDualStack
|
||||
34
apps/ispeak3/statefulset.yaml
Normal file
34
apps/ispeak3/statefulset.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: teamspeak3-server
|
||||
namespace: ispeak3
|
||||
spec:
|
||||
serviceName: "teamspeak3"
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: teamspeak3
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: teamspeak3
|
||||
spec:
|
||||
containers:
|
||||
- name: teamspeak3
|
||||
image: teamspeak:3.13.7
|
||||
ports:
|
||||
- containerPort: 9987
|
||||
name: voice
|
||||
protocol: UDP
|
||||
- containerPort: 10011
|
||||
name: query
|
||||
- containerPort: 30033
|
||||
name: filetransfer
|
||||
volumeMounts:
|
||||
- name: ts3-data
|
||||
mountPath: /var/ts3server/
|
||||
volumes:
|
||||
- name: ts3-data
|
||||
persistentVolumeClaim:
|
||||
claimName: ispeak3-ts3-data
|
||||
@@ -1,5 +1,13 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- gitea.yaml
|
||||
- renovate.yaml
|
||||
- gitea
|
||||
- registry
|
||||
- renovate
|
||||
- librechat
|
||||
- frigate
|
||||
- llama
|
||||
- immich
|
||||
- nas
|
||||
- searxng
|
||||
- ispeak3
|
||||
|
||||
5
apps/librechat/kustomization.yaml
Normal file
5
apps/librechat/kustomization.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- release.yaml
|
||||
5
apps/librechat/namespace.yaml
Normal file
5
apps/librechat/namespace.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: librechat
|
||||
120
apps/librechat/release.yaml
Normal file
120
apps/librechat/release.yaml
Normal file
@@ -0,0 +1,120 @@
|
||||
---
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: dynomite567-charts
|
||||
namespace: librechat
|
||||
spec:
|
||||
interval: 24h
|
||||
url: https://dynomite567.github.io/helm-charts/
|
||||
---
|
||||
# apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
# kind: HelmRelease
|
||||
# metadata:
|
||||
# name: librechat
|
||||
# namespace: librechat
|
||||
# spec:
|
||||
# interval: 30m
|
||||
# chart:
|
||||
# spec:
|
||||
# chart: librechat
|
||||
# version: 1.9.1
|
||||
# sourceRef:
|
||||
# kind: HelmRepository
|
||||
# name: dynomite567-charts
|
||||
# values:
|
||||
# global:
|
||||
# librechat:
|
||||
# existingSecretName: librechat
|
||||
# librechat:
|
||||
# configEnv:
|
||||
# PLUGIN_MODELS: null
|
||||
# ALLOW_REGISTRATION: "false"
|
||||
# TRUST_PROXY: "1"
|
||||
# DOMAIN_CLIENT: https://librechat.lumpiasty.xyz
|
||||
# SEARCH: "true"
|
||||
# existingSecretName: librechat
|
||||
# configYamlContent: |
|
||||
# version: 1.0.3
|
||||
|
||||
# endpoints:
|
||||
# custom:
|
||||
# - name: "Llama.cpp"
|
||||
# apiKey: "llama"
|
||||
# baseURL: "http://llama.llama.svc.cluster.local:11434/v1"
|
||||
# models:
|
||||
# default: [
|
||||
# "DeepSeek-R1-0528-Qwen3-8B-GGUF",
|
||||
# "Qwen3-8B-GGUF",
|
||||
# "Qwen3-8B-GGUF-no-thinking",
|
||||
# "gemma3n-e4b",
|
||||
# "gemma3-12b",
|
||||
# "gemma3-12b-q2",
|
||||
# "gemma3-12b-novision",
|
||||
# "gemma3-4b",
|
||||
# "gemma3-4b-novision",
|
||||
# "Qwen3-4B-Thinking-2507",
|
||||
# "Qwen3-4B-Thinking-2507-long-ctx",
|
||||
# "Qwen2.5-VL-7B-Instruct-GGUF",
|
||||
# "Qwen2.5-VL-32B-Instruct-GGUF-IQ1_S",
|
||||
# "Qwen2.5-VL-32B-Instruct-GGUF-Q2_K_L",
|
||||
# "Qwen3-VL-2B-Instruct-GGUF",
|
||||
# "Qwen3-VL-2B-Instruct-GGUF-unslothish",
|
||||
# "Qwen3-VL-2B-Thinking-GGUF",
|
||||
# "Qwen3-VL-4B-Instruct-GGUF",
|
||||
# "Qwen3-VL-4B-Instruct-GGUF-unslothish",
|
||||
# "Qwen3-VL-4B-Thinking-GGUF",
|
||||
# "Qwen3-VL-8B-Instruct-GGUF",
|
||||
# "Qwen3-VL-8B-Instruct-GGUF-unslothish",
|
||||
# "Qwen3-VL-8B-Thinking-GGUF",
|
||||
# "Huihui-Qwen3-VL-8B-Instruct-abliterated-GGUF",
|
||||
# "Huihui-Qwen3-VL-8B-Thinking-abliterated-GGUF"
|
||||
# ]
|
||||
# titleConvo: true
|
||||
# titleModel: "gemma3-4b-novision"
|
||||
# summarize: false
|
||||
# summaryModel: "gemma3-4b-novision"
|
||||
# forcePrompt: false
|
||||
# modelDisplayLabel: "Llama.cpp"
|
||||
|
||||
# # ✨ IMPORTANT: let llama-swap/llama-server own all these
|
||||
# dropParams:
|
||||
# - "temperature"
|
||||
# - "top_p"
|
||||
# - "top_k"
|
||||
# - "presence_penalty"
|
||||
# - "frequency_penalty"
|
||||
# - "stop"
|
||||
# - "max_tokens"
|
||||
# imageVolume:
|
||||
# enabled: true
|
||||
# size: 10G
|
||||
# accessModes: ReadWriteOnce
|
||||
# storageClassName: mayastor-single-hdd
|
||||
# ingress:
|
||||
# enabled: true
|
||||
# className: nginx-ingress
|
||||
# annotations:
|
||||
# cert-manager.io/cluster-issuer: letsencrypt
|
||||
# nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||
# nginx.ingress.kubernetes.io/proxy-buffering: "false"
|
||||
# nginx.ingress.kubernetes.io/proxy-read-timeout: 30m
|
||||
# hosts:
|
||||
# - host: librechat.lumpiasty.xyz
|
||||
# paths:
|
||||
# - path: /
|
||||
# pathType: ImplementationSpecific
|
||||
# tls:
|
||||
# - hosts:
|
||||
# - librechat.lumpiasty.xyz
|
||||
# secretName: librechat-ingress
|
||||
|
||||
# mongodb:
|
||||
# persistence:
|
||||
# storageClass: mayastor-single-hdd
|
||||
|
||||
# meilisearch:
|
||||
# persistence:
|
||||
# storageClass: mayastor-single-hdd
|
||||
# auth:
|
||||
# existingMasterKeySecret: librechat
|
||||
68
apps/llama/auth-proxy.yaml
Normal file
68
apps/llama/auth-proxy.yaml
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: llama-proxy
|
||||
namespace: llama
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: llama-proxy
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: llama-proxy
|
||||
spec:
|
||||
containers:
|
||||
- name: caddy
|
||||
image: caddy:2.10.2-alpine
|
||||
imagePullPolicy: IfNotPresent
|
||||
volumeMounts:
|
||||
- mountPath: /etc/caddy
|
||||
name: proxy-config
|
||||
env:
|
||||
- name: API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: llama-api-key
|
||||
key: API_KEY
|
||||
volumes:
|
||||
- name: proxy-config
|
||||
configMap:
|
||||
name: llama-proxy-config
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
namespace: llama
|
||||
name: llama-proxy-config
|
||||
data:
|
||||
Caddyfile: |
|
||||
http://llama.lumpiasty.xyz {
|
||||
|
||||
@requireAuth {
|
||||
not header Authorization "Bearer {env.API_KEY}"
|
||||
}
|
||||
|
||||
respond @requireAuth "Unauthorized" 401
|
||||
|
||||
reverse_proxy llama:11434 {
|
||||
flush_interval -1
|
||||
}
|
||||
}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
namespace: llama
|
||||
name: llama-proxy
|
||||
spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
app.kubernetes.io/name: llama-proxy
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
targetPort: 80
|
||||
protocol: TCP
|
||||
468
apps/llama/configs/config.yaml
Normal file
468
apps/llama/configs/config.yaml
Normal file
@@ -0,0 +1,468 @@
|
||||
healthCheckTimeout: 600
|
||||
|
||||
models:
|
||||
"DeepSeek-R1-0528-Qwen3-8B-GGUF":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/DeepSeek-R1-0528-Qwen3-8B-GGUF:Q4_K_M
|
||||
--n-gpu-layers 37
|
||||
--ctx-size 16384
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-8B-GGUF":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/Qwen3-8B-GGUF:Q4_K_M
|
||||
--n-gpu-layers 37
|
||||
--ctx-size 16384
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-8B-GGUF-no-thinking":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/Qwen3-8B-GGUF:Q4_K_M
|
||||
--n-gpu-layers 37
|
||||
--ctx-size 16384
|
||||
--jinja
|
||||
--chat-template-file /config/qwen_nothink_chat_template.jinja
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"gemma3n-e4b":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/gemma-3n-E4B-it-GGUF:UD-Q4_K_XL
|
||||
--ctx-size 16384
|
||||
--n-gpu-layers 99
|
||||
--seed 3407
|
||||
--prio 2
|
||||
--temp 1.0
|
||||
--repeat-penalty 1.0
|
||||
--min-p 0.00
|
||||
--top-k 64
|
||||
--top-p 0.95
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"gemma3-12b":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/gemma-3-12b-it-GGUF:Q4_K_M
|
||||
--ctx-size 16384
|
||||
--n-gpu-layers 99
|
||||
--prio 2
|
||||
--temp 1.0
|
||||
--repeat-penalty 1.0
|
||||
--min-p 0.00
|
||||
--top-k 64
|
||||
--top-p 0.95
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"gemma3-12b-novision":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/gemma-3-12b-it-GGUF:Q4_K_M
|
||||
--ctx-size 16384
|
||||
--n-gpu-layers 99
|
||||
--prio 2
|
||||
--temp 1.0
|
||||
--repeat-penalty 1.0
|
||||
--min-p 0.00
|
||||
--top-k 64
|
||||
--top-p 0.95
|
||||
--no-mmproj
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"gemma3-12b-q2":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/gemma-3-12b-it-GGUF:Q2_K_L
|
||||
--ctx-size 16384
|
||||
--n-gpu-layers 99
|
||||
--prio 2
|
||||
--temp 1.0
|
||||
--repeat-penalty 1.0
|
||||
--min-p 0.00
|
||||
--top-k 64
|
||||
--top-p 0.95
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"gemma3-4b":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/gemma-3-4b-it-GGUF:Q4_K_M
|
||||
--ctx-size 16384
|
||||
--n-gpu-layers 99
|
||||
--prio 2
|
||||
--temp 1.0
|
||||
--repeat-penalty 1.0
|
||||
--min-p 0.00
|
||||
--top-k 64
|
||||
--top-p 0.95
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"gemma3-4b-novision":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/gemma-3-4b-it-GGUF:Q4_K_M
|
||||
--ctx-size 16384
|
||||
--n-gpu-layers 99
|
||||
--prio 2
|
||||
--temp 1.0
|
||||
--repeat-penalty 1.0
|
||||
--min-p 0.00
|
||||
--top-k 64
|
||||
--top-p 0.95
|
||||
--no-mmproj
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-4B-Thinking-2507":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/Qwen3-4B-Thinking-2507-GGUF:Q4_K_M
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 16384
|
||||
--predict 8192
|
||||
--temp 0.6
|
||||
--min-p 0.00
|
||||
--top-p 0.95
|
||||
--top-k 20
|
||||
--repeat-penalty 1.0
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-4B-Thinking-2507-long-ctx":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/Qwen3-4B-Thinking-2507-GGUF:Q4_K_M
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 262144
|
||||
--predict 81920
|
||||
--temp 0.6
|
||||
--min-p 0.00
|
||||
--top-p 0.95
|
||||
--top-k 20
|
||||
--repeat-penalty 1.0
|
||||
--no-warmup
|
||||
--flash-attn auto
|
||||
--cache-type-k q8_0
|
||||
--cache-type-v q8_0
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-4B-Instruct-2507":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/Qwen3-4B-Instruct-2507-GGUF:Q4_K_M
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 16384
|
||||
--predict 8192
|
||||
--temp 0.7
|
||||
--min-p 0.00
|
||||
--top-p 0.8
|
||||
--top-k 20
|
||||
--repeat-penalty 1.0
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-4B-Instruct-2507-long-ctx":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/Qwen3-4B-Instruct-2507-GGUF:Q4_K_M
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 262144
|
||||
--predict 81920
|
||||
--temp 0.7
|
||||
--min-p 0.00
|
||||
--top-p 0.8
|
||||
--top-k 20
|
||||
--repeat-penalty 1.0
|
||||
--no-warmup
|
||||
--flash-attn auto
|
||||
--cache-type-k q8_0
|
||||
--cache-type-v q8_0
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen2.5-VL-32B-Instruct-GGUF-IQ1_S":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/Qwen2.5-VL-32B-Instruct-GGUF:IQ1_S
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 16384
|
||||
--predict 8192
|
||||
--temp 0.7
|
||||
--min-p 0.00
|
||||
--top-p 0.8
|
||||
--top-k 20
|
||||
--repeat-penalty 1.0
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen2.5-VL-32B-Instruct-GGUF-Q2_K_L":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/Qwen2.5-VL-32B-Instruct-GGUF:Q2_K_L
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 16384
|
||||
--predict 8192
|
||||
--temp 0.7
|
||||
--min-p 0.00
|
||||
--top-p 0.8
|
||||
--top-k 20
|
||||
--repeat-penalty 1.0
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen2.5-VL-7B-Instruct-GGUF":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf unsloth/Qwen2.5-VL-7B-Instruct-GGUF:Q4_K_M
|
||||
--n-gpu-layers 37
|
||||
--ctx-size 16384
|
||||
--predict 8192
|
||||
--temp 0.7
|
||||
--min-p 0.00
|
||||
--top-p 0.8
|
||||
--top-k 20
|
||||
--repeat-penalty 1.0
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-VL-2B-Instruct-GGUF":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf Qwen/Qwen3-VL-2B-Instruct-GGUF:Q8_0
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 12288
|
||||
--predict 4096
|
||||
--flash-attn auto
|
||||
--jinja
|
||||
--temp 0.7
|
||||
--top-p 0.85
|
||||
--top-k 20
|
||||
--min-p 0.05
|
||||
--repeat-penalty 1.15
|
||||
--frequency-penalty 0.5
|
||||
--presence-penalty 0.4
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-VL-4B-Instruct-GGUF":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf Qwen/Qwen3-VL-4B-Instruct-GGUF:Q8_0
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 12288
|
||||
--predict 4096
|
||||
--flash-attn auto
|
||||
--jinja
|
||||
--temp 0.7
|
||||
--top-p 0.85
|
||||
--top-k 20
|
||||
--min-p 0.05
|
||||
--repeat-penalty 1.15
|
||||
--frequency-penalty 0.5
|
||||
--presence-penalty 0.4
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-VL-8B-Instruct-GGUF":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf Qwen/Qwen3-VL-8B-Instruct-GGUF:Q4_K_M
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 12288
|
||||
--predict 4096
|
||||
--flash-attn auto
|
||||
--jinja
|
||||
--temp 0.7
|
||||
--top-p 0.85
|
||||
--top-k 20
|
||||
--min-p 0.05
|
||||
--repeat-penalty 1.15
|
||||
--frequency-penalty 0.5
|
||||
--presence-penalty 0.4
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-VL-2B-Instruct-GGUF-unslothish":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf Qwen/Qwen3-VL-2B-Instruct-GGUF:Q8_0
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 12288
|
||||
--predict 4096
|
||||
--flash-attn auto
|
||||
--jinja
|
||||
--temp 0.7
|
||||
--top-p 0.8
|
||||
--top-k 20
|
||||
--min-p 0.05
|
||||
--repeat-penalty 1.15
|
||||
--frequency-penalty 0.5
|
||||
--presence-penalty 0.6
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-VL-4B-Instruct-GGUF-unslothish":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf Qwen/Qwen3-VL-4B-Instruct-GGUF:Q8_0
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 12288
|
||||
--predict 4096
|
||||
--flash-attn auto
|
||||
--jinja
|
||||
--temp 0.7
|
||||
--top-p 0.8
|
||||
--top-k 20
|
||||
--min-p 0.05
|
||||
--repeat-penalty 1.15
|
||||
--frequency-penalty 0.5
|
||||
--presence-penalty 0.6
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-VL-8B-Instruct-GGUF-unslothish":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf Qwen/Qwen3-VL-8B-Instruct-GGUF:Q4_K_M
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 12288
|
||||
--predict 4096
|
||||
--flash-attn auto
|
||||
--jinja
|
||||
--temp 0.7
|
||||
--top-p 0.8
|
||||
--top-k 20
|
||||
--min-p 0.05
|
||||
--repeat-penalty 1.15
|
||||
--frequency-penalty 0.5
|
||||
--presence-penalty 0.6
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-VL-2B-Thinking-GGUF":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf Qwen/Qwen3-VL-2B-Thinking-GGUF:Q8_0
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 12288
|
||||
--predict 4096
|
||||
--flash-attn auto
|
||||
--jinja
|
||||
--top-p 0.95
|
||||
--top-k 20
|
||||
--temp 1.0
|
||||
--min-p 0.0
|
||||
--repeat-penalty 1.0
|
||||
--presence-penalty 0.0
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-VL-4B-Thinking-GGUF":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf Qwen/Qwen3-VL-4B-Thinking-GGUF:Q4_K_M
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 12288
|
||||
--predict 4096
|
||||
--flash-attn auto
|
||||
--jinja
|
||||
--top-p 0.95
|
||||
--top-k 20
|
||||
--temp 1.0
|
||||
--min-p 0.0
|
||||
--repeat-penalty 1.0
|
||||
--presence-penalty 0.0
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Qwen3-VL-8B-Thinking-GGUF":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf Qwen/Qwen3-VL-8B-Thinking-GGUF:Q4_K_M
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 12288
|
||||
--predict 4096
|
||||
--flash-attn auto
|
||||
--jinja
|
||||
--top-p 0.95
|
||||
--top-k 20
|
||||
--temp 1.0
|
||||
--min-p 0.0
|
||||
--repeat-penalty 1.0
|
||||
--presence-penalty 0.0
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Huihui-Qwen3-VL-8B-Instruct-abliterated-GGUF":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf noctrex/Huihui-Qwen3-VL-8B-Instruct-abliterated-GGUF:Q6_K
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 12288
|
||||
--predict 4096
|
||||
--flash-attn auto
|
||||
--jinja
|
||||
--temp 0.7
|
||||
--top-p 0.85
|
||||
--top-k 20
|
||||
--min-p 0.05
|
||||
--repeat-penalty 1.15
|
||||
--frequency-penalty 0.5
|
||||
--presence-penalty 0.4
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
|
||||
"Huihui-Qwen3-VL-8B-Thinking-abliterated-GGUF":
|
||||
ttl: 600
|
||||
cmd: |
|
||||
/app/llama-server
|
||||
-hf noctrex/Huihui-Qwen3-VL-8B-Thinking-abliterated-GGUF:Q6_K
|
||||
--n-gpu-layers 99
|
||||
--ctx-size 12288
|
||||
--predict 4096
|
||||
--flash-attn auto
|
||||
--jinja
|
||||
--temp 0.7
|
||||
--top-p 0.85
|
||||
--top-k 20
|
||||
--min-p 0.05
|
||||
--repeat-penalty 1.15
|
||||
--frequency-penalty 0.5
|
||||
--presence-penalty 0.4
|
||||
--no-warmup
|
||||
--port ${PORT}
|
||||
101
apps/llama/configs/qwen_nothink_chat_template.jinja
Normal file
101
apps/llama/configs/qwen_nothink_chat_template.jinja
Normal file
@@ -0,0 +1,101 @@
|
||||
{%- if not add_generation_prompt is defined %}
|
||||
{%- set add_generation_prompt = false %}
|
||||
{%- endif %}
|
||||
{%- set ns = namespace(is_first=false, is_tool=false, is_output_first=true, system_prompt='', is_first_sp=true, is_last_user=false) %}
|
||||
{%- for message in messages %}
|
||||
{%- if message['role'] == 'system' %}
|
||||
{%- if ns.is_first_sp %}
|
||||
{%- set ns.system_prompt = ns.system_prompt + message['content'] %}
|
||||
{%- set ns.is_first_sp = false %}
|
||||
{%- else %}
|
||||
{%- set ns.system_prompt = ns.system_prompt + '\n\n' + message['content'] %}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
|
||||
{#- Adapted from https://github.com/sgl-project/sglang/blob/main/examples/chat_template/tool_chat_template_deepseekr1.jinja #}
|
||||
{%- if tools is defined and tools is not none %}
|
||||
{%- set tool_ns = namespace(text='You are a helpful assistant with tool calling capabilities. ' + 'When a tool call is needed, you MUST use the following format to issue the call:\n' + '<|tool▁calls▁begin|><|tool▁call▁begin|>function<|tool▁sep|>FUNCTION_NAME\n' + '```json\n{"param1": "value1", "param2": "value2"}\n```<|tool▁call▁end|><|tool▁calls▁end|>\n\n' + 'Make sure the JSON is valid.' + '## Tools\n\n### Function\n\nYou have the following functions available:\n\n') %}
|
||||
{%- for tool in tools %}
|
||||
{%- set tool_ns.text = tool_ns.text + '\n```json\n' + (tool | tojson) + '\n```\n' %}
|
||||
{%- endfor %}
|
||||
{%- if ns.system_prompt|length != 0 %}
|
||||
{%- set ns.system_prompt = ns.system_prompt + '\n\n' + tool_ns.text %}
|
||||
{%- else %}
|
||||
{%- set ns.system_prompt = tool_ns.text %}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{{- bos_token }}
|
||||
{{- '/no_think' + ns.system_prompt }}
|
||||
{%- set last_index = (messages|length - 1) %}
|
||||
{%- for message in messages %}
|
||||
{%- set content = message['content'] %}
|
||||
{%- if message['role'] == 'user' %}
|
||||
{%- set ns.is_tool = false -%}
|
||||
{%- set ns.is_first = false -%}
|
||||
{%- set ns.is_last_user = true -%}
|
||||
{%- if loop.index0 == last_index %}
|
||||
{{- '<|User|>' + content }}
|
||||
{%- else %}
|
||||
{{- '<|User|>' + content + '<|Assistant|>'}}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- if message['role'] == 'assistant' %}
|
||||
{%- if '</think>' in content %}
|
||||
{%- set content = (content.split('</think>')|last) %}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- if message['role'] == 'assistant' and message['tool_calls'] is defined and message['tool_calls'] is not none %}
|
||||
{%- set ns.is_last_user = false -%}
|
||||
{%- if ns.is_tool %}
|
||||
{{- '<|tool▁outputs▁end|>'}}
|
||||
{%- endif %}
|
||||
{%- set ns.is_first = false %}
|
||||
{%- set ns.is_tool = false -%}
|
||||
{%- set ns.is_output_first = true %}
|
||||
{%- for tool in message['tool_calls'] %}
|
||||
{%- set arguments = tool['function']['arguments'] %}
|
||||
{%- if arguments is not string %}
|
||||
{%- set arguments = arguments|tojson %}
|
||||
{%- endif %}
|
||||
{%- if not ns.is_first %}
|
||||
{%- if content is none %}
|
||||
{{- '<|tool▁calls▁begin|><|tool▁call▁begin|>' + tool['type'] + '<|tool▁sep|>' + tool['function']['name'] + '\n' + '```json' + '\n' + arguments + '\n' + '```' + '<|tool▁call▁end|>'}}
|
||||
}
|
||||
{%- else %}
|
||||
{{- content + '<|tool▁calls▁begin|><|tool▁call▁begin|>' + tool['type'] + '<|tool▁sep|>' + tool['function']['name'] + '\n' + '```json' + '\n' + arguments + '\n' + '```' + '<|tool▁call▁end|>'}}
|
||||
{%- endif %}
|
||||
{%- set ns.is_first = true -%}
|
||||
{%- else %}
|
||||
{{- '\n' + '<|tool▁call▁begin|>' + tool['type'] + '<|tool▁sep|>' + tool['function']['name'] + '\n' + '```json' + '\n' + arguments + '\n' + '```' + '<|tool▁call▁end|>'}}
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
{{- '<|tool▁calls▁end|><|end▁of▁sentence|>'}}
|
||||
{%- endif %}
|
||||
{%- if message['role'] == 'assistant' and (message['tool_calls'] is not defined or message['tool_calls'] is none) %}
|
||||
{%- set ns.is_last_user = false -%}
|
||||
{%- if ns.is_tool %}
|
||||
{{- '<|tool▁outputs▁end|>' + content + '<|end▁of▁sentence|>'}}
|
||||
{%- set ns.is_tool = false -%}
|
||||
{%- else %}
|
||||
{{- content + '<|end▁of▁sentence|>'}}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- if message['role'] == 'tool' %}
|
||||
{%- set ns.is_last_user = false -%}
|
||||
{%- set ns.is_tool = true -%}
|
||||
{%- if ns.is_output_first %}
|
||||
{{- '<|tool▁outputs▁begin|><|tool▁output▁begin|>' + content + '<|tool▁output▁end|>'}}
|
||||
{%- set ns.is_output_first = false %}
|
||||
{%- else %}
|
||||
{{- '\n<|tool▁output▁begin|>' + content + '<|tool▁output▁end|>'}}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
{%- endfor -%}
|
||||
{%- if ns.is_tool %}
|
||||
{{- '<|tool▁outputs▁end|>'}}
|
||||
{%- endif %}
|
||||
{#- if add_generation_prompt and not ns.is_last_user and not ns.is_tool #}
|
||||
{%- if add_generation_prompt and not ns.is_tool %}
|
||||
{{- '<|Assistant|>'}}
|
||||
{%- endif %}
|
||||
70
apps/llama/deployment.yaml
Normal file
70
apps/llama/deployment.yaml
Normal file
@@ -0,0 +1,70 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: llama-swap
|
||||
namespace: llama
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: llama-swap
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: llama-swap
|
||||
spec:
|
||||
containers:
|
||||
- name: llama-swap
|
||||
image: ghcr.io/mostlygeek/llama-swap:v172-vulkan-b7062
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- /app/llama-swap
|
||||
args:
|
||||
- --config=/config/config.yaml
|
||||
- --watch-config
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
name: http
|
||||
protocol: TCP
|
||||
volumeMounts:
|
||||
- name: models
|
||||
mountPath: /app/.cache
|
||||
- mountPath: /dev/kfd
|
||||
name: kfd
|
||||
- mountPath: /dev/dri
|
||||
name: dri
|
||||
- mountPath: /config
|
||||
name: config
|
||||
securityContext:
|
||||
privileged: true
|
||||
volumes:
|
||||
- name: models
|
||||
persistentVolumeClaim:
|
||||
claimName: llama-models
|
||||
- name: kfd
|
||||
hostPath:
|
||||
path: /dev/kfd
|
||||
type: CharDevice
|
||||
- name: dri
|
||||
hostPath:
|
||||
path: /dev/dri
|
||||
type: Directory
|
||||
- name: config
|
||||
configMap:
|
||||
name: llama-swap
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: llama
|
||||
namespace: llama
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- name: http
|
||||
port: 11434
|
||||
targetPort: 8080
|
||||
protocol: TCP
|
||||
selector:
|
||||
app: llama-swap
|
||||
28
apps/llama/ingress.yaml
Normal file
28
apps/llama/ingress.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
namespace: llama
|
||||
name: llama
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
acme.cert-manager.io/http01-edit-in-place: "true"
|
||||
nginx.ingress.kubernetes.io/proxy-buffering: "false"
|
||||
nginx.ingress.kubernetes.io/proxy-read-timeout: 30m
|
||||
spec:
|
||||
ingressClassName: nginx-ingress
|
||||
rules:
|
||||
- host: llama.lumpiasty.xyz
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: llama-proxy
|
||||
port:
|
||||
number: 80
|
||||
path: /
|
||||
pathType: Prefix
|
||||
tls:
|
||||
- hosts:
|
||||
- llama.lumpiasty.xyz
|
||||
secretName: llama-ingress
|
||||
15
apps/llama/kustomization.yaml
Normal file
15
apps/llama/kustomization.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- secret.yaml
|
||||
- auth-proxy.yaml
|
||||
- ingress.yaml
|
||||
- pvc.yaml
|
||||
- deployment.yaml
|
||||
configMapGenerator:
|
||||
- name: llama-swap
|
||||
namespace: llama
|
||||
files:
|
||||
- config.yaml=configs/config.yaml
|
||||
- qwen_nothink_chat_template.jinja=configs/qwen_nothink_chat_template.jinja
|
||||
5
apps/llama/namespace.yaml
Normal file
5
apps/llama/namespace.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: llama
|
||||
13
apps/llama/pvc.yaml
Normal file
13
apps/llama/pvc.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
namespace: llama
|
||||
name: llama-models
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 200Gi
|
||||
storageClassName: mayastor-single-ssd
|
||||
38
apps/llama/secret.yaml
Normal file
38
apps/llama/secret.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: llama-proxy
|
||||
namespace: llama
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultAuth
|
||||
metadata:
|
||||
name: llama
|
||||
namespace: llama
|
||||
spec:
|
||||
method: kubernetes
|
||||
mount: kubernetes
|
||||
kubernetes:
|
||||
role: llama-proxy
|
||||
serviceAccount: llama-proxy
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultStaticSecret
|
||||
metadata:
|
||||
name: llama-api-key
|
||||
namespace: llama
|
||||
spec:
|
||||
type: kv-v2
|
||||
|
||||
mount: secret
|
||||
path: ollama
|
||||
|
||||
destination:
|
||||
create: true
|
||||
name: llama-api-key
|
||||
type: Opaque
|
||||
transformation:
|
||||
excludeRaw: true
|
||||
|
||||
vaultAuthRef: llama
|
||||
28
apps/nas/configmap.yaml
Normal file
28
apps/nas/configmap.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: nas-sftp-config
|
||||
namespace: nas
|
||||
data:
|
||||
sftp.json: |
|
||||
{
|
||||
"Global": {
|
||||
"Chroot": {
|
||||
"Directory": "%h",
|
||||
"StartPath": "data"
|
||||
},
|
||||
"Directories": [
|
||||
"data"
|
||||
]
|
||||
},
|
||||
"Users": [
|
||||
{
|
||||
"Username": "nas",
|
||||
"UID": 1000,
|
||||
"GID": 1000,
|
||||
"PublicKeys": [
|
||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCresbDFZijI+rZMgd3LdciPjpb4x4S5B7y0U+EoYPaz6hILT72fyz3QdcgKJJv8JUJI6g0811/yFRuOzCXgWaA922c/S/t6HMUrorh7mPVQMTN2dc/SVBvMa7S2M9NYBj6z1X2LRHs+g1JTMCtL202PIjes/E9qu0as0Vx6n/6HHNmtmA9LrpiAmurbeKXDmrYe2yWg/FA6cX5d86SJb21Dj8WqdCd3Hz0Pi6FzMKXhpWvs5Hfei1htsjsRzCxkpSTjlgFEFVfmHIXPfB06Sa6aCnkxAFnE7N+xNa9RIWeZmOXdA74LsfSKQ9eAXSrsC/IRxo2ce8cBzXJy+Itxw24fUqGYXBiCgx8i3ZA9IdwI1u71xYo9lyNjav5VykzKnAHRAYnDm9UsCf8k04reBevcLdtxL11vPCtind3xn76Nhy2b45dcp/MdYFANGsCcXJOMb6Aisb03HPGhs/aU3tCAQbTVe195mL9FWhGqIK2wBmF1SKW+4ssX2bIU6YaCYc= cardno:23_671_999"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
68
apps/nas/deployment.yaml
Normal file
68
apps/nas/deployment.yaml
Normal file
@@ -0,0 +1,68 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: nas-sftp
|
||||
namespace: nas
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: nas-sftp
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: nas-sftp
|
||||
spec:
|
||||
initContainers:
|
||||
- name: prepare-home
|
||||
image: alpine:3.23.3
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- |
|
||||
set -euo pipefail
|
||||
mkdir -p /volume/sftp-root
|
||||
chown root:root /volume/sftp-root
|
||||
chmod 755 /volume/sftp-root
|
||||
mkdir -p /volume/sftp-root/data
|
||||
chown 1000:1000 /volume/sftp-root/data
|
||||
chmod 750 /volume/sftp-root/data
|
||||
mkdir -p /volume/host-keys
|
||||
chown root:root /volume/host-keys
|
||||
chmod 700 /volume/host-keys
|
||||
volumeMounts:
|
||||
- name: home
|
||||
mountPath: /volume
|
||||
containers:
|
||||
- name: sftp
|
||||
image: docker.io/emberstack/sftp:build-5.1.72
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- containerPort: 22
|
||||
name: sftp
|
||||
protocol: TCP
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /app/config/sftp.json
|
||||
subPath: sftp.json
|
||||
readOnly: true
|
||||
- name: home
|
||||
mountPath: /home/nas
|
||||
subPath: sftp-root
|
||||
- name: home
|
||||
mountPath: /etc/ssh/keys
|
||||
subPath: host-keys
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
memory: 512Mi
|
||||
volumes:
|
||||
- name: home
|
||||
persistentVolumeClaim:
|
||||
claimName: nas-data-lvm-hdd
|
||||
- name: config
|
||||
configMap:
|
||||
name: nas-sftp-config
|
||||
8
apps/nas/kustomization.yaml
Normal file
8
apps/nas/kustomization.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- configmap.yaml
|
||||
- pvc.yaml
|
||||
- deployment.yaml
|
||||
- service.yaml
|
||||
4
apps/nas/namespace.yaml
Normal file
4
apps/nas/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: nas
|
||||
49
apps/nas/pvc.yaml
Normal file
49
apps/nas/pvc.yaml
Normal file
@@ -0,0 +1,49 @@
|
||||
apiVersion: local.openebs.io/v1alpha1
|
||||
kind: LVMVolume
|
||||
metadata:
|
||||
labels:
|
||||
kubernetes.io/nodename: anapistula-delrosalae
|
||||
name: nas-data-lvm-hdd
|
||||
namespace: openebs
|
||||
spec:
|
||||
capacity: 4Gi
|
||||
ownerNodeID: anapistula-delrosalae
|
||||
shared: "yes"
|
||||
thinProvision: "no"
|
||||
vgPattern: ^openebs-hdd$
|
||||
volGroup: openebs-hdd
|
||||
---
|
||||
kind: PersistentVolume
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: nas-data-lvm-hdd
|
||||
spec:
|
||||
capacity:
|
||||
storage: 4Gi
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
persistentVolumeReclaimPolicy: Delete
|
||||
storageClassName: openebs-lvmpv
|
||||
volumeMode: Filesystem
|
||||
csi:
|
||||
driver: local.csi.openebs.io
|
||||
volumeHandle: nas-data-lvm-hdd
|
||||
claimRef:
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
namespace: nas
|
||||
name: nas-data-lvm-hdd
|
||||
---
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: nas-data-lvm-hdd
|
||||
namespace: nas
|
||||
spec:
|
||||
storageClassName: openebs-lvmpv
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 4Gi
|
||||
volumeName: nas-data-lvm-hdd
|
||||
15
apps/nas/service.yaml
Normal file
15
apps/nas/service.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: nas-sftp
|
||||
namespace: nas
|
||||
spec:
|
||||
type: LoadBalancer
|
||||
externalTrafficPolicy: Cluster
|
||||
ports:
|
||||
- name: sftp
|
||||
port: 22
|
||||
targetPort: 22
|
||||
protocol: TCP
|
||||
selector:
|
||||
app: nas-sftp
|
||||
40
apps/registry/deployment.yaml
Normal file
40
apps/registry/deployment.yaml
Normal file
@@ -0,0 +1,40 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: registry
|
||||
namespace: registry
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: registry
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: registry
|
||||
spec:
|
||||
containers:
|
||||
- name: registry
|
||||
image: registry:3.0.0
|
||||
ports:
|
||||
- containerPort: 5000
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /var/lib/registry
|
||||
volumes:
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: registry-data
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: registry-service
|
||||
namespace: registry
|
||||
spec:
|
||||
selector:
|
||||
app: registry
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 80
|
||||
targetPort: 5000
|
||||
26
apps/registry/ingress.yaml
Normal file
26
apps/registry/ingress.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
namespace: registry
|
||||
name: registry
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||
spec:
|
||||
ingressClassName: nginx-ingress
|
||||
rules:
|
||||
- host: registry.lumpiasty.xyz
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: registry-service
|
||||
port:
|
||||
number: 80
|
||||
path: /
|
||||
pathType: Prefix
|
||||
tls:
|
||||
- hosts:
|
||||
- registry.lumpiasty.xyz
|
||||
secretName: researcher-ingress
|
||||
8
apps/registry/kustomization.yaml
Normal file
8
apps/registry/kustomization.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- volume.yaml
|
||||
- deployment.yaml
|
||||
- ingress.yaml
|
||||
5
apps/registry/namespace.yaml
Normal file
5
apps/registry/namespace.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: registry
|
||||
13
apps/registry/volume.yaml
Normal file
13
apps/registry/volume.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: registry-data
|
||||
namespace: registry
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 50Gi
|
||||
storageClassName: mayastor-single-hdd
|
||||
11
apps/renovate/configmap.yaml
Normal file
11
apps/renovate/configmap.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
namespace: renovate
|
||||
name: renovate-config
|
||||
data:
|
||||
RENOVATE_AUTODISCOVER: "true"
|
||||
RENOVATE_ENDPOINT: https://gitea.lumpiasty.xyz/api/v1
|
||||
RENOVATE_PLATFORM: gitea
|
||||
RENOVATE_GIT_AUTHOR: Renovate Bot <renovate@lumpiasty.xyz>
|
||||
@@ -1,16 +1,11 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: renovate
|
||||
---
|
||||
apiVersion: batch/v1
|
||||
kind: CronJob
|
||||
metadata:
|
||||
name: renovate
|
||||
namespace: renovate
|
||||
spec:
|
||||
schedule: "@hourly"
|
||||
schedule: "@daily"
|
||||
concurrencyPolicy: Forbid
|
||||
jobTemplate:
|
||||
spec:
|
||||
@@ -20,8 +15,10 @@ spec:
|
||||
- name: renovate
|
||||
# Update this to the latest available and then enable Renovate on
|
||||
# the manifest
|
||||
image: renovate/renovate:39.215.2-full
|
||||
image: renovate/renovate:43.4.1-full
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: renovate-env
|
||||
name: renovate-gitea-token
|
||||
- configMapRef:
|
||||
name: renovate-config
|
||||
restartPolicy: Never
|
||||
7
apps/renovate/kustomization.yaml
Normal file
7
apps/renovate/kustomization.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- configmap.yaml
|
||||
- secret.yaml
|
||||
- cronjob.yaml
|
||||
5
apps/renovate/namespace.yaml
Normal file
5
apps/renovate/namespace.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: renovate
|
||||
38
apps/renovate/secret.yaml
Normal file
38
apps/renovate/secret.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: renovate
|
||||
namespace: renovate
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultAuth
|
||||
metadata:
|
||||
name: renovate
|
||||
namespace: renovate
|
||||
spec:
|
||||
method: kubernetes
|
||||
mount: kubernetes
|
||||
kubernetes:
|
||||
role: renovate
|
||||
serviceAccount: renovate
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultStaticSecret
|
||||
metadata:
|
||||
name: renovate-gitea-token
|
||||
namespace: renovate
|
||||
spec:
|
||||
type: kv-v2
|
||||
|
||||
mount: secret
|
||||
path: renovate
|
||||
|
||||
destination:
|
||||
create: true
|
||||
name: renovate-gitea-token
|
||||
type: Opaque
|
||||
transformation:
|
||||
excludeRaw: true
|
||||
|
||||
vaultAuthRef: renovate
|
||||
1
apps/searxng/configs/settings.yml
Normal file
1
apps/searxng/configs/settings.yml
Normal file
@@ -0,0 +1 @@
|
||||
use_default_settings: true
|
||||
42
apps/searxng/deployment.yaml
Normal file
42
apps/searxng/deployment.yaml
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: searxng
|
||||
namespace: searxng
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: searxng
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: searxng
|
||||
spec:
|
||||
containers:
|
||||
- name: searxng
|
||||
image: searxng/searxng:2025.8.12-6b1516d
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
env:
|
||||
- name: SEARXNG_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: searxng-secret
|
||||
key: SEARXNG_SECRET
|
||||
optional: false
|
||||
volumeMounts:
|
||||
- name: config-volume
|
||||
mountPath: /etc/searxng/settings.yml
|
||||
subPath: settings.yml
|
||||
readOnly: true
|
||||
- name: searxng-persistent-data
|
||||
mountPath: /var/cache/searxng
|
||||
volumes:
|
||||
- name: config-volume
|
||||
configMap:
|
||||
name: searxng-config
|
||||
- name: searxng-persistent-data
|
||||
persistentVolumeClaim:
|
||||
claimName: searxng-persistent-data
|
||||
25
apps/searxng/ingress.yaml
Normal file
25
apps/searxng/ingress.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
namespace: searxng
|
||||
name: searxng
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt
|
||||
spec:
|
||||
ingressClassName: nginx-ingress
|
||||
rules:
|
||||
- host: searxng.lumpiasty.xyz
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: searxng
|
||||
port:
|
||||
number: 8080
|
||||
path: /
|
||||
pathType: Prefix
|
||||
tls:
|
||||
- hosts:
|
||||
- searxng.lumpiasty.xyz
|
||||
secretName: searxng-ingress
|
||||
13
apps/searxng/kustomization.yaml
Normal file
13
apps/searxng/kustomization.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- pvc.yaml
|
||||
- deployment.yaml
|
||||
- service.yaml
|
||||
- ingress.yaml
|
||||
configMapGenerator:
|
||||
- name: searxng-config
|
||||
namespace: searxng
|
||||
files:
|
||||
- settings.yml=configs/settings.yml
|
||||
5
apps/searxng/namespace.yaml
Normal file
5
apps/searxng/namespace.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: searxng
|
||||
13
apps/searxng/pvc.yaml
Normal file
13
apps/searxng/pvc.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
namespace: searxng
|
||||
name: searxng-persistent-data
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
storageClassName: mayastor-single-ssd
|
||||
14
apps/searxng/service.yaml
Normal file
14
apps/searxng/service.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: searxng
|
||||
namespace: searxng
|
||||
spec:
|
||||
selector:
|
||||
app: searxng
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 8080
|
||||
targetPort: 8080
|
||||
type: ClusterIP
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,17 +1,34 @@
|
||||
{
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"devenv": {
|
||||
"locked": {
|
||||
"lastModified": 1733328505,
|
||||
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||
"revCount": 69,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz"
|
||||
"dir": "src/modules",
|
||||
"lastModified": 1769881431,
|
||||
"owner": "cachix",
|
||||
"repo": "devenv",
|
||||
"rev": "72d5e66e2dd5112766ef4c9565872b51094b542d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/edolstra/flake-compat/1.1.0.tar.gz"
|
||||
"dir": "src/modules",
|
||||
"owner": "cachix",
|
||||
"repo": "devenv",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1767039857,
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
@@ -19,11 +36,10 @@
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"lastModified": 1731533236,
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -32,6 +48,47 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"git-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1769069492,
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "a1ef738813b15cf8ec759bdff5761b027e3e1d23",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"git-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762808025,
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "cb5e3fdca1de58ccbc3ef53de65bd372b48f567c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"krew2nix": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
@@ -42,11 +99,10 @@
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1738540903,
|
||||
"narHash": "sha256-/C5RTu3yCpVFHIL7u3hL9ZRGrXmIrLg3iB4+z9A3E8A=",
|
||||
"lastModified": 1769904483,
|
||||
"owner": "a1994sc",
|
||||
"repo": "krew2nix",
|
||||
"rev": "5bc50d65d6496ad30f897a9fe5532f440fb143ef",
|
||||
"rev": "17d6ad3375899bd3f7d4d298481536155f3ec13c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -57,11 +113,10 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1742069588,
|
||||
"narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=",
|
||||
"lastModified": 1769461804,
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5",
|
||||
"rev": "bfc1b8a4574108ceef22f02bafcf6611380c100d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -73,15 +128,18 @@
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"devenv": "devenv",
|
||||
"git-hooks": "git-hooks",
|
||||
"krew2nix": "krew2nix",
|
||||
"nixpkgs": "nixpkgs"
|
||||
"nixpkgs": "nixpkgs",
|
||||
"pre-commit-hooks": [
|
||||
"git-hooks"
|
||||
]
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
@@ -96,7 +154,6 @@
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
@@ -116,11 +173,10 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1715940852,
|
||||
"narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=",
|
||||
"lastModified": 1769691507,
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "2fba33a182602b9d49f0b2440513e5ee091d838b",
|
||||
"rev": "28b19c5844cc6e2257801d43f2772a4b4c050a1b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
59
devenv.nix
Normal file
59
devenv.nix
Normal file
@@ -0,0 +1,59 @@
|
||||
{ pkgs, lib, config, inputs, ... }:
|
||||
|
||||
let
|
||||
# Python with hvac package
|
||||
python = pkgs.python313.withPackages (python-pkgs: with python-pkgs; [
|
||||
hvac
|
||||
]);
|
||||
in
|
||||
{
|
||||
# Overlays - apply krew2nix to get kubectl with krew support
|
||||
overlays = [
|
||||
inputs.krew2nix.overlay
|
||||
];
|
||||
|
||||
# Environment variables
|
||||
env = {
|
||||
GREET = "devenv";
|
||||
TALOSCONFIG = "${config.devenv.root}/talos/generated/talosconfig";
|
||||
EDITOR = "vim";
|
||||
RESTIC_REPOSITORY = "s3:https://s3.eu-central-003.backblazeb2.com/lumpiasty-backups";
|
||||
VAULT_ADDR = "https://openbao.lumpiasty.xyz:8200";
|
||||
PATH = "${config.devenv.root}/utils:${pkgs.coreutils}/bin";
|
||||
PYTHON_BIN = "${python}/bin/python";
|
||||
};
|
||||
|
||||
# Packages
|
||||
packages = with pkgs; [
|
||||
python
|
||||
vim gnumake
|
||||
talosctl cilium-cli
|
||||
kubectx k9s kubernetes-helm
|
||||
(kubectl.withKrewPlugins (plugins: with plugins; [
|
||||
mayastor
|
||||
openebs
|
||||
]))
|
||||
ansible
|
||||
fluxcd
|
||||
restic
|
||||
openbao
|
||||
pv-migrate
|
||||
];
|
||||
|
||||
# Scripts
|
||||
scripts.hello.exec = ''
|
||||
echo hello from $GREET
|
||||
'';
|
||||
|
||||
# Shell hooks
|
||||
enterShell = ''
|
||||
source ${pkgs.bash-completion}/share/bash-completion/bash_completion
|
||||
echo "Environment ready!"
|
||||
'';
|
||||
|
||||
# Tests
|
||||
enterTest = ''
|
||||
echo "Running tests"
|
||||
git --version | grep --color=auto "${pkgs.git.version}"
|
||||
'';
|
||||
}
|
||||
20
devenv.yaml
Normal file
20
devenv.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json
|
||||
inputs:
|
||||
nixpkgs:
|
||||
url: github:NixOS/nixpkgs/nixos-unstable
|
||||
krew2nix:
|
||||
url: github:a1994sc/krew2nix
|
||||
inputs:
|
||||
nixpkgs:
|
||||
follows: nixpkgs
|
||||
|
||||
# If you're using non-OSS software, you can set allowUnfree to true.
|
||||
# allowUnfree: true
|
||||
|
||||
# If you're willing to use a package that's vulnerable
|
||||
# permittedInsecurePackages:
|
||||
# - "openssl-1.1.1w"
|
||||
|
||||
# If you have more than one devenv you can merge them
|
||||
#imports:
|
||||
# - ./backend
|
||||
59
flake.nix
59
flake.nix
@@ -1,59 +0,0 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
|
||||
# Only to ease updating flake.lock, flake-compat is used by shell.nix
|
||||
flake-compat.url = https://flakehub.com/f/edolstra/flake-compat/1.1.0.tar.gz;
|
||||
|
||||
# Allows us to install krew plugins
|
||||
krew2nix.url = "github:a1994sc/krew2nix";
|
||||
krew2nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, krew2nix, ... }: let
|
||||
system = "x86_64-linux";
|
||||
in {
|
||||
devShells."${system}".default =
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
overlays = [ krew2nix.overlay ];
|
||||
inherit system;
|
||||
};
|
||||
in
|
||||
pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
(python313.withPackages (python-pkgs: with python-pkgs; [
|
||||
hvac
|
||||
]))
|
||||
vim gnumake
|
||||
talosctl cilium-cli
|
||||
kubectx k9s kubernetes-helm
|
||||
(kubectl.withKrewPlugins (plugins: with plugins; [
|
||||
mayastor
|
||||
openebs
|
||||
]))
|
||||
ansible
|
||||
fluxcd
|
||||
restic
|
||||
openbao
|
||||
];
|
||||
|
||||
shellHook = ''
|
||||
# Get completions working
|
||||
source ${pkgs.bash-completion}/share/bash-completion/bash_completion
|
||||
|
||||
export TALOSCONFIG=$(pwd)/talos/generated/talosconfig
|
||||
export EDITOR=vim
|
||||
|
||||
export RESTIC_REPOSITORY=s3:https://s3.eu-central-003.backblazeb2.com/lumpiasty-backups
|
||||
# export AWS_ACCESS_KEY_ID=?
|
||||
# export AWS_SECRET_ACCESS_KEY=?
|
||||
# export RESTIC_PASSWORD=?
|
||||
export VAULT_ADDR=https://openbao.lumpiasty.xyz:8200
|
||||
|
||||
# Add scripts from utils subdir
|
||||
export PATH="$PATH:$(pwd)/utils"
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
12
infra/configs/lvmpv-hdd-sc.yaml
Normal file
12
infra/configs/lvmpv-hdd-sc.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: hdd-lvmpv
|
||||
parameters:
|
||||
storage: "lvm"
|
||||
volgroup: "openebs-hdd"
|
||||
fsType: "btrfs"
|
||||
shared: "yes"
|
||||
provisioner: local.csi.openebs.io
|
||||
allowVolumeExpansion: true
|
||||
volumeBindingMode: Immediate
|
||||
38
infra/configs/ovh-cert-manager-secret.yaml
Normal file
38
infra/configs/ovh-cert-manager-secret.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: ovh-credentials
|
||||
namespace: cert-manager
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultAuth
|
||||
metadata:
|
||||
name: cert-manager
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
method: kubernetes
|
||||
mount: kubernetes
|
||||
kubernetes:
|
||||
role: cert-manager
|
||||
serviceAccount: ovh-credentials
|
||||
---
|
||||
apiVersion: secrets.hashicorp.com/v1beta1
|
||||
kind: VaultStaticSecret
|
||||
metadata:
|
||||
name: webhook-ovh-credentials
|
||||
namespace: cert-manager
|
||||
spec:
|
||||
type: kv-v2
|
||||
|
||||
mount: secret
|
||||
path: ovh-cert-manager
|
||||
|
||||
destination:
|
||||
create: true
|
||||
name: ovh-credentials
|
||||
type: Opaque
|
||||
transformation:
|
||||
excludeRaw: true
|
||||
|
||||
vaultAuthRef: cert-manager
|
||||
@@ -16,3 +16,5 @@ parameters:
|
||||
poolAffinityTopologyLabel: |
|
||||
type: hdd
|
||||
provisioner: io.openebs.csi-mayastor
|
||||
# Allow expansion of volumes
|
||||
allowVolumeExpansion: true
|
||||
|
||||
18
infra/configs/single-ssd-sc.yaml
Normal file
18
infra/configs/single-ssd-sc.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: mayastor-single-ssd
|
||||
parameters:
|
||||
protocol: nvmf
|
||||
# Single replica
|
||||
repl: "1"
|
||||
# Thin provision volumes
|
||||
thin: "true"
|
||||
# Generate new filesystem's uuid when cloning
|
||||
cloneFsIdAsVolumeId: "true"
|
||||
# Schedule this sconly on ssd
|
||||
poolAffinityTopologyLabel: |
|
||||
type: ssd
|
||||
provisioner: io.openebs.csi-mayastor
|
||||
# Allow expansion of volumes
|
||||
allowVolumeExpansion: true
|
||||
@@ -18,14 +18,14 @@ spec:
|
||||
chart:
|
||||
spec:
|
||||
chart: cert-manager-webhook-ovh
|
||||
version: 0.7.3
|
||||
version: 0.8.0
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: cert-manager-webhook-ovh
|
||||
namespace: cert-manager
|
||||
interval: 12h
|
||||
values:
|
||||
configVersion: 0.0.1
|
||||
configVersion: 0.0.2
|
||||
groupName: lumpiasty-homelab
|
||||
certManager:
|
||||
namespace: cert-manager
|
||||
@@ -38,6 +38,7 @@ spec:
|
||||
acmeServerUrl: https://acme-v02.api.letsencrypt.org/directory
|
||||
email: arek.dzski@gmail.com
|
||||
ovhEndpointName: ovh-eu
|
||||
ovhAuthenticationMethod: application
|
||||
ovhAuthenticationRef:
|
||||
applicationKeyRef:
|
||||
name: ovh-credentials
|
||||
@@ -45,6 +46,6 @@ spec:
|
||||
applicationSecretRef:
|
||||
name: ovh-credentials
|
||||
key: applicationSecret
|
||||
consumerKeyRef:
|
||||
applicationConsumerKeyRef:
|
||||
name: ovh-credentials
|
||||
key: consumerKey
|
||||
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
chart:
|
||||
spec:
|
||||
chart: cert-manager
|
||||
version: 1.17.0
|
||||
version: v1.19.3
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: cert-manager
|
||||
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
chart:
|
||||
spec:
|
||||
chart: cilium
|
||||
version: 1.17.2
|
||||
version: 1.18.6
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: cilium
|
||||
|
||||
31
infra/controllers/cloudnative-pg.yaml
Normal file
31
infra/controllers/cloudnative-pg.yaml
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: cnpg-system
|
||||
---
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: cnpg
|
||||
namespace: cnpg-system
|
||||
spec:
|
||||
interval: 24h
|
||||
url: https://cloudnative-pg.github.io/charts
|
||||
---
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: cnpg
|
||||
namespace: cnpg-system
|
||||
spec:
|
||||
interval: 30m
|
||||
chart:
|
||||
spec:
|
||||
chart: cloudnative-pg
|
||||
version: 0.27.0
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: cnpg
|
||||
namespace: cnpg-system
|
||||
interval: 12h
|
||||
@@ -97,7 +97,7 @@ spec:
|
||||
env:
|
||||
- name: GOMEMLIMIT
|
||||
value: 161MiB
|
||||
image: registry.k8s.io/coredns/coredns:v1.12.0
|
||||
image: registry.k8s.io/coredns/coredns:v1.14.1
|
||||
imagePullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
|
||||
32
infra/controllers/external-secrets.yaml
Normal file
32
infra/controllers/external-secrets.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: external-secrets
|
||||
---
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: external-secrets
|
||||
namespace: external-secrets
|
||||
spec:
|
||||
interval: 24h
|
||||
url: https://charts.external-secrets.io
|
||||
---
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: external-secrets
|
||||
namespace: external-secrets
|
||||
spec:
|
||||
interval: 30m
|
||||
chart:
|
||||
spec:
|
||||
chart: external-secrets
|
||||
version: 0.16.2
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: external-secrets
|
||||
namespace: external-secrets
|
||||
interval: 12h
|
||||
values:
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
chart:
|
||||
spec:
|
||||
chart: k8up
|
||||
version: 4.8.3
|
||||
version: 4.8.6
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: k8up-io
|
||||
|
||||
33
infra/controllers/mongodb-operator.yaml
Normal file
33
infra/controllers/mongodb-operator.yaml
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: mongodb
|
||||
---
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: mongodb
|
||||
namespace: mongodb
|
||||
spec:
|
||||
interval: 24h
|
||||
url: https://mongodb.github.io/helm-charts
|
||||
---
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: mongodb-operator
|
||||
namespace: mongodb
|
||||
spec:
|
||||
interval: 30m
|
||||
chart:
|
||||
spec:
|
||||
chart: community-operator
|
||||
version: 0.13.0
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: mongodb
|
||||
namespace: mongodb
|
||||
values:
|
||||
operator:
|
||||
watchNamespace: "*"
|
||||
@@ -2,32 +2,32 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: nginx-ingress-controller
|
||||
name: nginx-ingress
|
||||
---
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: nginx
|
||||
namespace: nginx-ingress-controller
|
||||
name: ingress-nginx
|
||||
namespace: nginx-ingress
|
||||
spec:
|
||||
interval: 24h
|
||||
url: https://helm.nginx.com/stable
|
||||
url: https://kubernetes.github.io/ingress-nginx
|
||||
---
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: nginx-ingress
|
||||
namespace: nginx-ingress-controller
|
||||
namespace: nginx-ingress
|
||||
spec:
|
||||
interval: 30m
|
||||
chart:
|
||||
spec:
|
||||
chart: nginx-ingress
|
||||
version: 2.0.1
|
||||
chart: ingress-nginx
|
||||
version: 4.14.3
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: nginx
|
||||
namespace: nginx-ingress-controller
|
||||
name: ingress-nginx
|
||||
namespace: nginx-ingress
|
||||
interval: 12h
|
||||
values:
|
||||
controller:
|
||||
@@ -39,9 +39,11 @@ spec:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
|
||||
ingressClass:
|
||||
create: true
|
||||
setAsDefaultIngress: true
|
||||
ingressClass: "nginx-ingress"
|
||||
ingressClassResource:
|
||||
name: "nginx-ingress"
|
||||
enabled: true
|
||||
default: false
|
||||
|
||||
service:
|
||||
create: true
|
||||
@@ -49,8 +51,11 @@ spec:
|
||||
# Requirement for sharing ip with other service
|
||||
externalTrafficPolicy: Cluster
|
||||
ipFamilyPolicy: RequireDualStack
|
||||
ipFamilies:
|
||||
- IPv4
|
||||
- IPv6
|
||||
annotations:
|
||||
# Share IP with gitea ssh so we can have the same domain for both port
|
||||
lbipam.cilium.io/sharing-key: gitea
|
||||
lbipam.cilium.io/sharing-cross-namespace: gitea
|
||||
lbipam.cilium.io/ips: 10.44.0.0,2001:470:61a3:400::1
|
||||
lbipam.cilium.io/ips: 10.44.0.6,2001:470:61a3:400::6
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
chart:
|
||||
spec:
|
||||
chart: openbao
|
||||
version: 0.8.1
|
||||
version: 0.25.0
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: openbao
|
||||
@@ -77,3 +77,5 @@ spec:
|
||||
storageClass: mayastor-single-hdd
|
||||
csi:
|
||||
enabled: true
|
||||
injector:
|
||||
affinity: ""
|
||||
|
||||
@@ -23,7 +23,7 @@ spec:
|
||||
chart:
|
||||
spec:
|
||||
chart: openebs
|
||||
version: 4.1.3
|
||||
version: 4.4.0
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: openebs
|
||||
@@ -38,7 +38,7 @@ spec:
|
||||
lvm-localpv:
|
||||
crds:
|
||||
lmvLocalPv:
|
||||
enabled: false
|
||||
enabled: true
|
||||
|
||||
mayastor:
|
||||
csi:
|
||||
@@ -63,7 +63,7 @@ spec:
|
||||
# Workaround for crashing io-engine
|
||||
# https://github.com/openebs/mayastor/issues/1763#issuecomment-2481922234
|
||||
envcontext: "iova-mode=pa"
|
||||
coreList: [2, 3]
|
||||
coreList: [1, 7]
|
||||
resources:
|
||||
limits:
|
||||
cpu: 4
|
||||
@@ -102,10 +102,29 @@ spec:
|
||||
requests:
|
||||
cpu: 0
|
||||
|
||||
# Remove antiaffinity, breaks when I set it to 1 replica
|
||||
nats:
|
||||
cluster:
|
||||
enable: true
|
||||
replicas: 3
|
||||
affinity:
|
||||
podAntiAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution: []
|
||||
|
||||
loki:
|
||||
loki:
|
||||
commonConfig:
|
||||
replication_factor: 1
|
||||
singleBinary:
|
||||
replicas: 1
|
||||
minio:
|
||||
replicas: 1
|
||||
mode: standalone
|
||||
|
||||
engines:
|
||||
local:
|
||||
lvm:
|
||||
enabled: false
|
||||
enabled: true
|
||||
zfs:
|
||||
enabled: false
|
||||
replicated:
|
||||
|
||||
35
infra/controllers/vault-secrets-operator.yaml
Normal file
35
infra/controllers/vault-secrets-operator.yaml
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: vault-secrets-operator
|
||||
---
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: hashicorp
|
||||
namespace: vault-secrets-operator
|
||||
spec:
|
||||
interval: 24h
|
||||
url: https://helm.releases.hashicorp.com
|
||||
---
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: vault-secrets-operator
|
||||
namespace: vault-secrets-operator
|
||||
spec:
|
||||
interval: 30m
|
||||
chart:
|
||||
spec:
|
||||
chart: vault-secrets-operator
|
||||
version: 1.2.0
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: hashicorp
|
||||
namespace: vault-secrets-operator
|
||||
interval: 12h
|
||||
values:
|
||||
defaultVaultConnection:
|
||||
enabled: true
|
||||
address: "https://openbao.lumpiasty.xyz:8200"
|
||||
@@ -1,4 +1,4 @@
|
||||
apiVersion: "openebs.io/v1beta2"
|
||||
apiVersion: "openebs.io/v1beta3"
|
||||
kind: DiskPool
|
||||
metadata:
|
||||
name: anapistula-delrosalae-hdd
|
||||
|
||||
11
infra/diskpools/anapistula-delrosalae-ssd.yaml
Normal file
11
infra/diskpools/anapistula-delrosalae-ssd.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: "openebs.io/v1beta3"
|
||||
kind: DiskPool
|
||||
metadata:
|
||||
name: anapistula-delrosalae-ssd
|
||||
namespace: openebs
|
||||
spec:
|
||||
node: anapistula-delrosalae
|
||||
disks: ["aio:///dev/disk/by-id/nvme-eui.000000000000000000a07501ead1ebdb"]
|
||||
topology:
|
||||
labelled:
|
||||
type: ssd
|
||||
@@ -3,16 +3,24 @@ kind: Kustomization
|
||||
resources:
|
||||
- controllers/k8up-crd-4.8.3.yaml
|
||||
- controllers/cilium.yaml
|
||||
- controllers/nginx.yaml
|
||||
- controllers/nginx-ingress.yaml
|
||||
- controllers/dns-public.yaml
|
||||
- controllers/cert-manager.yaml
|
||||
- controllers/cert-manager-webhook-ovh.yaml
|
||||
- controllers/openebs.yaml
|
||||
- controllers/k8up.yaml
|
||||
- controllers/openbao.yaml
|
||||
- controllers/external-secrets.yaml
|
||||
- controllers/vault-secrets-operator.yaml
|
||||
- controllers/mongodb-operator.yaml
|
||||
- controllers/cloudnative-pg.yaml
|
||||
- diskpools/anapistula-delrosalae-hdd.yaml
|
||||
- diskpools/anapistula-delrosalae-ssd.yaml
|
||||
- configs/bgp-cluster-config.yaml
|
||||
- configs/loadbalancer-ippool.yaml
|
||||
- configs/single-hdd-sc.yaml
|
||||
- configs/single-ssd-sc.yaml
|
||||
- configs/lvmpv-hdd-sc.yaml
|
||||
- configs/mayastor-snapshotclass.yaml
|
||||
- configs/openbao-cert.yaml
|
||||
- configs/ovh-cert-manager-secret.yaml
|
||||
|
||||
16
monke/gpt-researcher.yaml
Normal file
16
monke/gpt-researcher.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: tavily
|
||||
namespace: gpt-researcher
|
||||
stringData:
|
||||
TAVILY_API_KEY: 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
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: openrouter
|
||||
namespace: gpt-researcher
|
||||
stringData:
|
||||
OPENROUTER_API_KEY: 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
|
||||
3
pyrightconfig.json
Normal file
3
pyrightconfig.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"allowedUntypedLibraries": ["hvac"]
|
||||
}
|
||||
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"kubernetes": {
|
||||
"fileMatch": ["\\.yaml$"]
|
||||
"fileMatch": ["infra/.+\\.yaml$", "apps/.+\\.yaml$"]
|
||||
},
|
||||
"flux": {
|
||||
"fileMatch": ["infra/.+\\.yaml$", "apps/.+\\.yaml$"]
|
||||
"fileMatch": [
|
||||
"infra/.+\\.yaml$",
|
||||
"apps/.+\\.yaml$",
|
||||
"gotk-components\\.ya?ml$"
|
||||
]
|
||||
},
|
||||
"prHourlyLimit": 9
|
||||
}
|
||||
|
||||
15
shell.nix
15
shell.nix
@@ -1,15 +0,0 @@
|
||||
# Needed for Nix Environment Selector
|
||||
# https://github.com/edolstra/flake-compat/
|
||||
(import
|
||||
(
|
||||
let
|
||||
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
||||
nodeName = lock.nodes.root.inputs.flake-compat;
|
||||
in
|
||||
fetchTarball {
|
||||
url = lock.nodes.${nodeName}.locked.url;
|
||||
sha256 = lock.nodes.${nodeName}.locked.narHash;
|
||||
}
|
||||
)
|
||||
{ src = ./.; }
|
||||
).shellNix
|
||||
@@ -1,7 +1,7 @@
|
||||
machine:
|
||||
network:
|
||||
interfaces:
|
||||
- interface: enp4s0
|
||||
- interface: eno1
|
||||
addresses:
|
||||
- 2001:470:61a3:100::3/64
|
||||
- 192.168.1.35/24
|
||||
@@ -10,13 +10,20 @@ machine:
|
||||
gateway: 2001:470:61a3:100:ffff:ffff:ffff:ffff
|
||||
- network: 0.0.0.0/0
|
||||
gateway: 192.168.1.1
|
||||
mtu: 1500
|
||||
mtu: 1280
|
||||
|
||||
install:
|
||||
diskSelector:
|
||||
wwid: t10.ATA SSDPR-CX400-256 GUH039914
|
||||
# Generated on https://factory.talos.dev/
|
||||
# intel-ucode and amdgpu
|
||||
image: factory.talos.dev/installer/06deebb947b815afa53f04c450d355d3c8bc28927a387c754db1622a0a06349e:v1.9.5
|
||||
# amd-ucode and amdgpu
|
||||
image: factory.talos.dev/metal-installer/9c1d1b442d73f96dcd04e81463eb20000ab014062d22e1b083e1773336bc1dd5:v1.10.6
|
||||
extraKernelArgs:
|
||||
- cpufreq.default_governor=performance
|
||||
sysfs:
|
||||
devices.system.cpu.cpu0.cpufreq.scaling_max_freq: "550000"
|
||||
devices.system.cpu.cpu1.cpufreq.scaling_max_freq: "550000"
|
||||
devices.system.cpu.cpu2.cpufreq.scaling_max_freq: "550000"
|
||||
devices.system.cpu.cpu6.cpufreq.scaling_max_freq: "550000"
|
||||
devices.system.cpu.cpu7.cpufreq.scaling_max_freq: "550000"
|
||||
devices.system.cpu.cpu8.cpufreq.scaling_max_freq: "550000"
|
||||
|
||||
11
talos/patches/frigate.patch
Normal file
11
talos/patches/frigate.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
# CSI driver requirement
|
||||
cluster:
|
||||
apiServer:
|
||||
admissionControl:
|
||||
- name: PodSecurity
|
||||
configuration:
|
||||
apiVersion: pod-security.admission.config.k8s.io/v1beta1
|
||||
kind: PodSecurityConfiguration
|
||||
exemptions:
|
||||
namespaces:
|
||||
- frigate
|
||||
11
talos/patches/llama.patch
Normal file
11
talos/patches/llama.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
# CSI driver requirement
|
||||
cluster:
|
||||
apiServer:
|
||||
admissionControl:
|
||||
- name: PodSecurity
|
||||
configuration:
|
||||
apiVersion: pod-security.admission.config.k8s.io/v1beta1
|
||||
kind: PodSecurityConfiguration
|
||||
exemptions:
|
||||
namespaces:
|
||||
- llama
|
||||
11
talos/patches/ollama.patch
Normal file
11
talos/patches/ollama.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
# CSI driver requirement
|
||||
cluster:
|
||||
apiServer:
|
||||
admissionControl:
|
||||
- name: PodSecurity
|
||||
configuration:
|
||||
apiVersion: pod-security.admission.config.k8s.io/v1beta1
|
||||
kind: PodSecurityConfiguration
|
||||
exemptions:
|
||||
namespaces:
|
||||
- ollama
|
||||
@@ -16,7 +16,7 @@ machine:
|
||||
- rw
|
||||
install:
|
||||
extraKernelArgs:
|
||||
- isolcpus=2,3
|
||||
- isolcpus=1,7
|
||||
|
||||
cluster:
|
||||
apiServer:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user