Skip to content

Commit 78d1cb3

Browse files
committed
Add Omni resources including Namespace, HelmRelease, PVC, and HTTPRoutes
1 parent a0dc410 commit 78d1cb3

File tree

8 files changed

+189
-21
lines changed

8 files changed

+189
-21
lines changed

ToDeploy.md

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,59 @@
11
## To deploy
22

3-
- [X] Minecraft server
43
- [ ] Move Minecraft to use [PaperMC](https://papermc.io/)
54
- [ ] https://tailscale.com/docs/features/kubernetes-operator
6-
- [X] Dashy
7-
- [X] XWiki
8-
- [X] OpenWebUI
9-
- [X] stakater
105
- [ ] BookStack
6+
- [ ] Omni https://github.com/siderolabs/omni/tree/main/deploy/helm/omni
7+
- [ ] https://alarik.io/docs
8+
- [ ] https://ozone.apache.org/
119
- [ ] https://github.com/owncloud/helm-charts
1210
- [ ] n8n task runners https://docs.n8n.io/hosting/configuration/task-runners/#external-mode
13-
- [X] https://go-vikunja.github.io/helm-chart/
14-
- [X] https://goauthentik.io
1511
- [ ] https://github.com/openSUSE/osem/blob/master/INSTALL.md
16-
- [X] Keycloak
1712
- [ ] Nextcloud
1813
- [ ] Keycloak theme
19-
- [X] Openclaw
20-
- [X] Coder https://github.com/Azure-Samples/aks-kueue-sample/blob/main/coder/
21-
- [X] https://github.com/open-webui/helm-charts or https://www.librechat.ai
22-
- [X] Grafana/Prometheus
23-
- [X] Forgejo
24-
- [X] Mailer and runners for ForgeJo
2514
- [ ] RustFS (https://s3.vps.kubespaces.cloud/)
2615
- [ ] Element Community (https://github.com/element-hq/ess-helm)
2716
- [ ] Pretalx
28-
- [X] Supabase
29-
- [ ] Harbor
3017
- [ ] Velero+restic to replace Borg
3118
- [ ] Restic Browser
3219
- [ ] Borgwarehouse / Backrest / https://github.com/axelhahn/restic-http-server-for-synology
33-
- [ ] https://github.com/hackmdio/CodiMD
3420
- [ ] https://github.com/documenso/documenso
3521
- [ ] Sync secrets from external source (like forgejo-smtp secret)
3622
- [ ] Cloud lab velero forgejo recovery lint traefik
3723
- [ ] BorgUI and alerts
38-
- [ ] ArgoCD w/ agents
3924
- [ ] Argo Workflows, Notifications
40-
- [ ] Garage Operator: https://github.com/rajsinghtech/garage-operator
25+
- [ ] Garage Operator: https://github.com/rajsinghtech/garage-operator
4126
- [ ] NocoDB or Baserow (Airtable alternative)
4227
- [ ] Appwrite (Supabase alternative)
4328
- [ ] https://github.com/OvenMediaLabs/OvenMediaEngine
4429
- [ ] temporal.io
4530
- [ ] Kubernetes login with github
4631

32+
## Deployed
33+
34+
- [X] Actual (budgeting)
35+
- [X] Authentik
36+
- [X] ArgoCD w/ agents
37+
- [X] Coder
38+
- [X] CodiMD
39+
- [X] Dashy
40+
- [X] Forgejo
41+
- [X] Mailer and runners for Forgejo
42+
- [X] Garage (S3)
43+
- [X] Grafana/Prometheus
44+
- [X] Harbor
45+
- [X] Keycloak
46+
- [X] Matrix
47+
- [X] Minecraft server
48+
- [X] n8n
49+
- [X] Openclaw
50+
- [X] OpenWebUI
51+
- [X] Rancher
52+
- [X] Stakater
53+
- [X] Supabase
54+
- [X] Vikunja
55+
- [X] Waha
56+
- [X] XWiki
57+
4758

48-
More stuff to consider: https://github.com/MaximUltimatum/talos-homelab/
59+
More stuff to consider: https://github.com/MaximUltimatum/talos-homelab/

gitops/apps/kustomization.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@ resources:
1919
- xwiki
2020
- coder
2121
- vikunja
22-
- waha
22+
- waha
23+
- omni
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
apiVersion: kustomize.config.k8s.io/v1beta1
3+
kind: Kustomization
4+
resources:
5+
- namespace.yaml
6+
- omni-ocirepository.yaml
7+
- omni-pvc.yaml
8+
- omni-helmrelease.yaml
9+
- omni-httproute.yaml

gitops/apps/omni/namespace.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
apiVersion: v1
3+
kind: Namespace
4+
metadata:
5+
name: omni
6+
labels:
7+
name: omni
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
2+
---
3+
apiVersion: helm.toolkit.fluxcd.io/v2
4+
kind: HelmRelease
5+
metadata:
6+
name: omni
7+
namespace: flux-system
8+
labels:
9+
app: omni
10+
spec:
11+
interval: 10m
12+
timeout: 5m
13+
targetNamespace: omni
14+
chartRef:
15+
kind: OCIRepository
16+
name: omni-ocirepo
17+
namespace: flux-system
18+
install:
19+
createNamespace: true
20+
remediation:
21+
retries: 3
22+
upgrade:
23+
remediation:
24+
retries: 3
25+
values:
26+
config:
27+
account:
28+
id: "" # TODO: generate once with `uuidgen` — never change after first deploy
29+
name: cloudlab
30+
auth:
31+
auth0:
32+
enabled: false
33+
oidc:
34+
enabled: true
35+
providerURL: "https://authentik.vps.kubespaces.cloud/application/o/omni/"
36+
clientID: "94lsxFCUSYJxZTun1wgvMKgFCXm6ExJxn7vKhAZH" # TODO: create OAuth2 app in Authentik
37+
# clientSecret loaded via additionalConfigSources below
38+
initialUsers:
39+
- alessandro.vozza@linux.com
40+
services:
41+
api:
42+
advertisedURL: "https://omni.vps.kubespaces.cloud"
43+
kubernetesProxy:
44+
advertisedURL: "https://omni-k8s.vps.kubespaces.cloud"
45+
machineAPI:
46+
advertisedURL: "https://omni-siderolink.vps.kubespaces.cloud"
47+
siderolink:
48+
joinTokensMode: strict
49+
eventSinkPort: 8091
50+
wireGuard:
51+
advertisedEndpoint: "" # TODO: VPS_PUBLIC_IP:30180 (must be IP:PORT, not hostname)
52+
workloadProxy:
53+
enabled: false
54+
55+
# Load OIDC client secret from a Kubernetes secret
56+
# kubectl create secret generic omni-oidc -n omni --from-literal=config.yaml=$'auth:\n oidc:\n clientSecret: YOUR_SECRET'
57+
additionalConfigSources:
58+
- existingSecret: omni-oidc
59+
60+
# GPG key for etcd encryption at rest
61+
# (export GNUPGHOME=$(mktemp -d); gpg --batch --passphrase '' --quick-gen-key x; gpg -a --export-secret-key > omni.asc; rm -rf $GNUPGHOME)
62+
# kubectl create secret generic omni-etcd-encryption-key -n omni --from-file=omni.asc=omni.asc
63+
etcdEncryptionKey:
64+
existingSecret: omni-etcd-encryption-key
65+
66+
persistence:
67+
enabled: true
68+
size: 10Gi
69+
70+
gatewayApi:
71+
ui:
72+
enabled: true
73+
hostnames:
74+
- omni.vps.kubespaces.cloud
75+
parentRefs:
76+
- name: gateway
77+
namespace: istio-system
78+
sectionName: http
79+
kubernetesProxy:
80+
enabled: true
81+
hostnames:
82+
- omni-k8s.vps.kubespaces.cloud
83+
parentRefs:
84+
- name: gateway
85+
namespace: istio-system
86+
sectionName: http
87+
siderolinkApi:
88+
enabled: true
89+
hostnames:
90+
- omni-siderolink.vps.kubespaces.cloud
91+
parentRefs:
92+
- name: gateway
93+
namespace: istio-system
94+
sectionName: http
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: source.toolkit.fluxcd.io/v1
2+
kind: OCIRepository
3+
metadata:
4+
name: omni-ocirepo
5+
namespace: flux-system
6+
spec:
7+
interval: 10m
8+
layerSelector:
9+
mediaType: "application/vnd.cncf.helm.chart.content.v1.tar+gzip"
10+
operation: copy
11+
url: oci://ghcr.io/siderolabs/charts/omni
12+
ref:
13+
semver: ">= 2.5.10"

gitops/apps/omni/omni-pvc.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: v1
2+
kind: PersistentVolumeClaim
3+
metadata:
4+
name: omni-pvc
5+
namespace: omni
6+
spec:
7+
accessModes:
8+
- ReadWriteOnce
9+
storageClassName: local-path
10+
resources:
11+
requests:
12+
storage: 10Gi

ingress/traefik/dynamic.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,27 @@ http:
1818
# Each domain gets its own router so Traefik can request
1919
# individual certs dynamically when new domains are added.
2020
# To add a new domain: copy any router block, change the name and Host.
21+
omni-siderolink:
22+
rule: "Host(`omni-siderolink.vps.kubespaces.cloud`)"
23+
entryPoints: [websecure]
24+
service: backend-service
25+
tls:
26+
certResolver: letsencrypt
27+
28+
omni-k8s:
29+
rule: "Host(`omni-k8s.vps.kubespaces.cloud`)"
30+
entryPoints: [websecure]
31+
service: backend-service
32+
tls:
33+
certResolver: letsencrypt
34+
35+
omni:
36+
rule: "Host(`omni.vps.kubespaces.cloud`)"
37+
entryPoints: [websecure]
38+
service: backend-service
39+
tls:
40+
certResolver: letsencrypt
41+
2142
waha:
2243
rule: "Host(`waha.vps.kubespaces.cloud`)"
2344
entryPoints: [websecure]

0 commit comments

Comments
 (0)