Compare commits
69 Commits
dmz
...
10fcd43274
| Author | SHA1 | Date | |
|---|---|---|---|
| 10fcd43274 | |||
| 126c6e6f45 | |||
| 10ce90a460 | |||
| c3cd2c0b8b | |||
| 8b74b2efb6 | |||
| eecf949f86 | |||
| 2b951b2814 | |||
| a1293abaf6 | |||
| 5781c6ddda | |||
| 42fc48bb27 | |||
| 0f908a1460 | |||
| 1febc6915e | |||
| a99e0649dd | |||
| d28f17120b | |||
| 44d099ad9e | |||
| 5c866c2eb7 | |||
| 216cece298 | |||
| f16da3d3a8 | |||
| f12b7aa532 | |||
| 8ec254f59c | |||
| 33fd621ec8 | |||
| 89b8364fe5 | |||
| 52038a7585 | |||
| 885ab5e3d7 | |||
| 7843ae7c29 | |||
| e2d1e01708 | |||
| e8cafed885 | |||
| 62b7efad89 | |||
| 47ddf2fd28 | |||
| 31b689d5fe | |||
| 5ef03e6dbe | |||
| 38bb3538a3 | |||
| 8c77e53669 | |||
| 44aac27362 | |||
| 0f4048072d | |||
| b6f0c41d5d | |||
| 3259cd6f37 | |||
| 418162a9e0 | |||
| de022ea46b | |||
| a50214eafc | |||
| be2ee6274a | |||
| 1fbe3dbc95 | |||
| f8a13c4bff | |||
| c9d77c5eec | |||
| 3457eba0a2 | |||
| 738d19edfa | |||
| 23d397e5d4 | |||
| 10bfb6fd54 | |||
| 0ff6377bd6 | |||
| 8d92151ad3 | |||
| 3f74860c28 | |||
| f12af0f92f | |||
| 86a5af321d | |||
| 4a1e4f980d | |||
| bf6c021d8b | |||
| 0abc90d9cd | |||
| e2cabee7dd | |||
| 1f2fd56d89 | |||
| 785a256258 | |||
| 26c3a919c6 | |||
| 280298cc0a | |||
| f5b4c58367 | |||
| 0a3f3d99d7 | |||
| 21405024f7 | |||
| 61110282d5 | |||
| 5765f9b5d7 | |||
| f70c55dcf2 | |||
| b2212a6608 | |||
| 5e5a7b3803 |
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: internalproxy
|
path: internalproxy
|
||||||
directory:
|
directory:
|
||||||
recurse: true
|
recurse: true
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: argocd
|
path: argocd
|
||||||
destination:
|
destination:
|
||||||
namespace: argocd
|
namespace: argocd
|
||||||
|
|||||||
21
argocd/templates/authentik.yaml
Normal file
21
argocd/templates/authentik.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: authentik
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
|
targetRevision: main
|
||||||
|
path: authentik
|
||||||
|
destination:
|
||||||
|
namespace: authentik
|
||||||
|
name: in-cluster
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
|
|
||||||
23
argocd/templates/bitwarden.yaml
Normal file
23
argocd/templates/bitwarden.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: bitwarden
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
|
targetRevision: main
|
||||||
|
path: bitwarden
|
||||||
|
directory:
|
||||||
|
recurse: true
|
||||||
|
destination:
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
namespace: bitwarden
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: false
|
||||||
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
|
|
||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: cert-manager
|
path: cert-manager
|
||||||
destination:
|
destination:
|
||||||
namespace: cert-manager
|
namespace: cert-manager
|
||||||
|
|||||||
20
argocd/templates/crossplane.yml
Normal file
20
argocd/templates/crossplane.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: crossplane
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
|
targetRevision: main
|
||||||
|
path: crossplane
|
||||||
|
destination:
|
||||||
|
namespace: crossplane
|
||||||
|
name: in-cluster
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
20
argocd/templates/durpapi.yaml
Normal file
20
argocd/templates/durpapi.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: durpapi
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
|
targetRevision: main
|
||||||
|
path: durpapi
|
||||||
|
destination:
|
||||||
|
namespace: durpapi
|
||||||
|
name: in-cluster
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
20
argocd/templates/durpot.yaml
Normal file
20
argocd/templates/durpot.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: durpot
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
|
targetRevision: main
|
||||||
|
path: durpot
|
||||||
|
destination:
|
||||||
|
namespace: durpot
|
||||||
|
name: in-cluster
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: external-dns
|
path: external-dns
|
||||||
destination:
|
destination:
|
||||||
namespace: external-dns
|
namespace: external-dns
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: external-secrets
|
path: external-secrets
|
||||||
destination:
|
destination:
|
||||||
namespace: external-secrets
|
namespace: external-secrets
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: gatekeeper
|
path: gatekeeper
|
||||||
destination:
|
destination:
|
||||||
namespace: gatekeeper
|
namespace: gatekeeper
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: gitlab-runner
|
path: gitlab-runner
|
||||||
destination:
|
destination:
|
||||||
namespace: gitlab-runner
|
namespace: gitlab-runner
|
||||||
|
|||||||
20
argocd/templates/heimdall.yaml
Normal file
20
argocd/templates/heimdall.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: heimdall
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
|
targetRevision: main
|
||||||
|
path: heimdall
|
||||||
|
destination:
|
||||||
|
namespace: heimdall
|
||||||
|
name: in-cluster
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
20
argocd/templates/krakend.yaml
Normal file
20
argocd/templates/krakend.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: krakend
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
|
targetRevision: main
|
||||||
|
path: krakend
|
||||||
|
destination:
|
||||||
|
namespace: krakend
|
||||||
|
name: in-cluster
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: kube-prometheus-stack
|
path: kube-prometheus-stack
|
||||||
destination:
|
destination:
|
||||||
namespace: kube-prometheus-stack
|
namespace: kube-prometheus-stack
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: kubeclarity
|
path: kubeclarity
|
||||||
destination:
|
destination:
|
||||||
namespace: kubeclarity
|
namespace: kubeclarity
|
||||||
|
|||||||
22
argocd/templates/littlelink.yaml
Normal file
22
argocd/templates/littlelink.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: littlelink
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
|
targetRevision: main
|
||||||
|
path: littlelink
|
||||||
|
directory:
|
||||||
|
recurse: true
|
||||||
|
destination:
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
namespace: littlelink
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: longhorn
|
path: longhorn
|
||||||
destination:
|
destination:
|
||||||
namespace: longhorn-system
|
namespace: longhorn-system
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: metallb-system
|
path: metallb-system
|
||||||
destination:
|
destination:
|
||||||
namespace: metallb-system
|
namespace: metallb-system
|
||||||
|
|||||||
23
argocd/templates/nfs-client.yaml
Normal file
23
argocd/templates/nfs-client.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: nfs-client
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
|
targetRevision: main
|
||||||
|
path: nfs-client
|
||||||
|
directory:
|
||||||
|
recurse: true
|
||||||
|
destination:
|
||||||
|
namespace: nfs-client
|
||||||
|
name: in-cluster
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
|
|
||||||
20
argocd/templates/open-webui.yaml
Normal file
20
argocd/templates/open-webui.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: open-webui
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
|
targetRevision: main
|
||||||
|
path: open-webui
|
||||||
|
destination:
|
||||||
|
namespace: open-webui
|
||||||
|
name: in-cluster
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
17
argocd/templates/secrets.yaml
Normal file
17
argocd/templates/secrets.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: vault-argocd
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/part-of: argocd
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: client-secret
|
||||||
|
data:
|
||||||
|
- secretKey: clientSecret
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/argocd/authentik
|
||||||
|
property: clientsecret
|
||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: traefik
|
path: traefik
|
||||||
destination:
|
destination:
|
||||||
namespace: traefik
|
namespace: traefik
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: uptimekuma
|
path: uptimekuma
|
||||||
directory:
|
directory:
|
||||||
recurse: true
|
recurse: true
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||||
targetRevision: dmz
|
targetRevision: main
|
||||||
path: vault
|
path: vault
|
||||||
destination:
|
destination:
|
||||||
namespace: vault
|
namespace: vault
|
||||||
|
|||||||
12
authentik/Chart.yaml
Normal file
12
authentik/Chart.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: authentik
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
|
||||||
|
version: 0.1.0
|
||||||
|
appVersion: "1.16.0"
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: authentik
|
||||||
|
repository: https://charts.goauthentik.io
|
||||||
|
version: 2024.8.1
|
||||||
24
authentik/templates/authentik-pv.yaml
Normal file
24
authentik/templates/authentik-pv.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#apiVersion: v1
|
||||||
|
#kind: PersistentVolume
|
||||||
|
#metadata:
|
||||||
|
# annotations:
|
||||||
|
# pv.kubernetes.io/provisioned-by: durp.info/nfs
|
||||||
|
# finalizers:
|
||||||
|
# - kubernetes.io/pv-protection
|
||||||
|
# name: authentik-pv
|
||||||
|
#spec:
|
||||||
|
# accessModes:
|
||||||
|
# - ReadWriteMany
|
||||||
|
# capacity:
|
||||||
|
# storage: 10Gi
|
||||||
|
# claimRef:
|
||||||
|
# apiVersion: v1
|
||||||
|
# kind: PersistentVolumeClaim
|
||||||
|
# name: authentik-pvc
|
||||||
|
# namespace: authentik
|
||||||
|
# nfs:
|
||||||
|
# path: /mnt/user/k3s/authentik
|
||||||
|
# server: 192.168.20.253
|
||||||
|
# persistentVolumeReclaimPolicy: Retain
|
||||||
|
# storageClassName: nfs-storage
|
||||||
|
# volumeMode: Filesystem
|
||||||
18
authentik/templates/authentik-pvc.yaml
Normal file
18
authentik/templates/authentik-pvc.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#apiVersion: v1
|
||||||
|
#kind: PersistentVolumeClaim
|
||||||
|
#metadata:
|
||||||
|
# labels:
|
||||||
|
# app.kubernetes.io/component: app
|
||||||
|
# app.kubernetes.io/instance: authentik
|
||||||
|
# app.kubernetes.io/managed-by: Helm
|
||||||
|
# app.kubernetes.io/name: authentik
|
||||||
|
# helm.sh/chart: authentik-2.14.4
|
||||||
|
# name: authentik-pvc
|
||||||
|
# namespace: authentik
|
||||||
|
#spec:
|
||||||
|
# accessModes:
|
||||||
|
# - ReadWriteMany
|
||||||
|
# resources:
|
||||||
|
# requests:
|
||||||
|
# storage: 10Gi
|
||||||
|
# storageClassName: nfs-storage
|
||||||
42
authentik/templates/ingress.yaml
Normal file
42
authentik/templates/ingress.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: authentik-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`authentik.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: authentik-server
|
||||||
|
port: 80
|
||||||
|
tls:
|
||||||
|
secretName: authentik-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: authentik-tls
|
||||||
|
spec:
|
||||||
|
secretName: authentik-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "authentik.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "authentik.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: authentik-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: authentik.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
28
authentik/templates/secrets.yaml
Normal file
28
authentik/templates/secrets.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: authentik-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: db-pass
|
||||||
|
data:
|
||||||
|
- secretKey: dbpass
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/authentik/database
|
||||||
|
property: dbpass
|
||||||
|
- secretKey: secretkey
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/authentik/database
|
||||||
|
property: secretkey
|
||||||
|
- secretKey: postgresql-postgres-password
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/authentik/database
|
||||||
|
property: dbpass
|
||||||
|
- secretKey: postgresql-password
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/authentik/database
|
||||||
|
property: dbpass
|
||||||
|
|
||||||
53
authentik/values.yaml
Normal file
53
authentik/values.yaml
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
authentik:
|
||||||
|
global:
|
||||||
|
env:
|
||||||
|
- name: AUTHENTIK_POSTGRESQL__PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: db-pass
|
||||||
|
key: dbpass
|
||||||
|
- name: AUTHENTIK_SECRET_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: db-pass
|
||||||
|
key: secretkey
|
||||||
|
revisionHistoryLimit: 1
|
||||||
|
image:
|
||||||
|
repository: registry.internal.durp.info/goauthentik/server
|
||||||
|
pullPolicy: Always
|
||||||
|
authentik:
|
||||||
|
outposts:
|
||||||
|
container_image_base: registry.internal.durp.info/goauthentik/%(type)s:%(version)s
|
||||||
|
postgresql:
|
||||||
|
host: '{{ .Release.Name }}-postgresql-hl'
|
||||||
|
name: "authentik"
|
||||||
|
user: "authentik"
|
||||||
|
port: 5432
|
||||||
|
server:
|
||||||
|
name: server
|
||||||
|
replicas: 3
|
||||||
|
worker:
|
||||||
|
replicas: 3
|
||||||
|
postgresql:
|
||||||
|
enabled: true
|
||||||
|
image:
|
||||||
|
registry: registry.internal.durp.info
|
||||||
|
repository: bitnami/postgresql
|
||||||
|
pullPolicy: Always
|
||||||
|
postgresqlUsername: "authentik"
|
||||||
|
postgresqlDatabase: "authentik"
|
||||||
|
existingSecret: db-pass
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
storageClass: longhorn
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
redis:
|
||||||
|
enabled: true
|
||||||
|
image:
|
||||||
|
registry: registry.internal.durp.info
|
||||||
|
repository: bitnami/redis
|
||||||
|
pullPolicy: Always
|
||||||
|
architecture: standalone
|
||||||
|
auth:
|
||||||
|
enabled: false
|
||||||
7
bitwarden/Chart.yaml
Normal file
7
bitwarden/Chart.yaml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: bitwarden
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
|
||||||
|
version: 0.1.0
|
||||||
|
appVersion: "1.16.0"
|
||||||
25
bitwarden/templates/bitwarden-pv.yaml
Normal file
25
bitwarden/templates/bitwarden-pv.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#apiVersion: v1
|
||||||
|
#kind: PersistentVolume
|
||||||
|
#metadata:
|
||||||
|
# annotations:
|
||||||
|
# pv.kubernetes.io/provisioned-by: durp.info/nfs
|
||||||
|
# finalizers:
|
||||||
|
# - kubernetes.io/pv-protection
|
||||||
|
# name: bitwarden-pv
|
||||||
|
#spec:
|
||||||
|
# accessModes:
|
||||||
|
# - ReadWriteMany
|
||||||
|
# capacity:
|
||||||
|
# storage: 10Gi
|
||||||
|
# claimRef:
|
||||||
|
# apiVersion: v1
|
||||||
|
# kind: PersistentVolumeClaim
|
||||||
|
# name: bitwarden-pvc
|
||||||
|
# namespace: bitwarden
|
||||||
|
# nfs:
|
||||||
|
# path: /mnt/user/k3s/bitwarden
|
||||||
|
# server: 192.168.20.253
|
||||||
|
# persistentVolumeReclaimPolicy: Retain
|
||||||
|
# storageClassName: nfs-storage
|
||||||
|
# volumeMode: Filesystem
|
||||||
|
#
|
||||||
11
bitwarden/templates/bitwarden-pvc.yaml
Normal file
11
bitwarden/templates/bitwarden-pvc.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: bitwarden-pvc
|
||||||
|
spec:
|
||||||
|
storageClassName: longhorn
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 10Gi
|
||||||
50
bitwarden/templates/deployment.yaml
Normal file
50
bitwarden/templates/deployment.yaml
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
namespace: bitwarden
|
||||||
|
name: bitwarden
|
||||||
|
labels:
|
||||||
|
app: bitwarden
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: bitwarden
|
||||||
|
replicas: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: bitwarden
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: bitwarden
|
||||||
|
image: registry.internal.durp.info/vaultwarden/server:1.30.3
|
||||||
|
imagePullPolicy: Always
|
||||||
|
volumeMounts:
|
||||||
|
- name: bitwarden-pvc
|
||||||
|
mountPath: /data
|
||||||
|
subPath: bitwaren-data
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
env:
|
||||||
|
- name: SIGNUPS_ALLOWED
|
||||||
|
value: "FALSE"
|
||||||
|
- name: INVITATIONS_ALLOWED
|
||||||
|
value: "FALSE"
|
||||||
|
- name: WEBSOCKET_ENABLED
|
||||||
|
value: "TRUE"
|
||||||
|
- name: ROCKET_ENV
|
||||||
|
value: "staging"
|
||||||
|
- name: ROCKET_PORT
|
||||||
|
value: "80"
|
||||||
|
- name: ROCKET_WORKERS
|
||||||
|
value: "10"
|
||||||
|
- name: SECRET_USERNAME
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: bitwarden-secret
|
||||||
|
key: ADMIN_TOKEN
|
||||||
|
volumes:
|
||||||
|
- name: bitwarden-pvc
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: bitwarden-pvc
|
||||||
42
bitwarden/templates/ingress.yaml
Normal file
42
bitwarden/templates/ingress.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: bitwarden-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`bitwarden.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: bitwarden
|
||||||
|
port: 80
|
||||||
|
tls:
|
||||||
|
secretName: bitwarden-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: bitwarden-tls
|
||||||
|
spec:
|
||||||
|
secretName: bitwarden-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "bitwarden.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "bitwarden.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: bitwarden-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: bitwarden.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
16
bitwarden/templates/secrets.yaml
Normal file
16
bitwarden/templates/secrets.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: bitwarden-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: bitwarden-secret
|
||||||
|
data:
|
||||||
|
- secretKey: ADMIN_TOKEN
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/bitwarden/admin
|
||||||
|
property: ADMIN_TOKEN
|
||||||
|
|
||||||
12
bitwarden/templates/service.yaml
Normal file
12
bitwarden/templates/service.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: bitwarden
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
app: bitwarden
|
||||||
12
crossplane/Chart.yaml
Normal file
12
crossplane/Chart.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: crossplane
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
|
||||||
|
version: 0.1.0
|
||||||
|
appVersion: "1.16.0"
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: crossplane
|
||||||
|
repository: https://charts.crossplane.io/stable
|
||||||
|
version: 1.12.0
|
||||||
55
crossplane/templates/gitlab.yml
Normal file
55
crossplane/templates/gitlab.yml
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
apiVersion: pkg.crossplane.io/v1
|
||||||
|
kind: Provider
|
||||||
|
metadata:
|
||||||
|
name: provider-gitlab
|
||||||
|
spec:
|
||||||
|
package: xpkg.upbound.io/crossplane-contrib/provider-gitlab:v0.5.0
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: gitlab-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: gitlab-secret
|
||||||
|
data:
|
||||||
|
- secretKey: accesstoken
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/gitlab/token
|
||||||
|
property: accesstoken
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#apiVersion: gitlab.crossplane.io/v1beta1
|
||||||
|
#kind: ProviderConfig
|
||||||
|
#metadata:
|
||||||
|
# name: gitlab-provider
|
||||||
|
#spec:
|
||||||
|
# baseURL: https://gitlab.com/
|
||||||
|
# credentials:
|
||||||
|
# source: Secret
|
||||||
|
# secretRef:
|
||||||
|
# namespace: crossplane
|
||||||
|
# name: gitlab-secret
|
||||||
|
# key: accesstoken
|
||||||
|
#
|
||||||
|
#---
|
||||||
|
#
|
||||||
|
#apiVersion: projects.gitlab.crossplane.io/v1alpha1
|
||||||
|
#kind: Project
|
||||||
|
#metadata:
|
||||||
|
# name: example-project
|
||||||
|
#spec:
|
||||||
|
# deletionPolicy: Orphan
|
||||||
|
# forProvider:
|
||||||
|
# name: "Example Project"
|
||||||
|
# description: "example project description"
|
||||||
|
# providerConfigRef:
|
||||||
|
# name: gitlab-provider
|
||||||
|
# policy:
|
||||||
|
# resolution: Optional
|
||||||
|
# resolve: Always
|
||||||
1506
dashboards/nginx-dashboard.yaml
Normal file
1506
dashboards/nginx-dashboard.yaml
Normal file
File diff suppressed because it is too large
Load Diff
13
durpapi/Chart.yaml
Normal file
13
durpapi/Chart.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: durpapi
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
|
||||||
|
version: 0.1.0-dev0184
|
||||||
|
appVersion: 0.1.0
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- condition: postgresql.enabled
|
||||||
|
version: 12.5.*
|
||||||
|
repository: https://charts.bitnami.com/bitnami
|
||||||
|
name: postgresql
|
||||||
38
durpapi/templates/deployment.yaml
Normal file
38
durpapi/templates/deployment.yaml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ .Chart.Name }}
|
||||||
|
labels:
|
||||||
|
app: {{ .Chart.Name }}
|
||||||
|
spec:
|
||||||
|
revisionHistoryLimit: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: {{ .Chart.Name }}
|
||||||
|
replicas: {{ .Values.deployment.hpa.minReplicas }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: {{ .Chart.Name }}
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: api
|
||||||
|
image: "{{ .Values.deployment.image }}:{{ default .Chart.Version .Values.deployment.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.deployment.imagePullPolicy }}
|
||||||
|
readinessProbe:
|
||||||
|
{{- toYaml .Values.deployment.probe.readiness | nindent 12 }}
|
||||||
|
livenessProbe:
|
||||||
|
{{- toYaml .Values.deployment.probe.liveness | nindent 12 }}
|
||||||
|
startupProbe:
|
||||||
|
{{- toYaml .Values.deployment.probe.startup | nindent 12 }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: {{ .Values.service.targetport }}
|
||||||
|
env:
|
||||||
|
- name: host
|
||||||
|
value: {{ .Values.swagger.host }}
|
||||||
|
- name: version
|
||||||
|
value: {{ default .Chart.Version .Values.deployment.tag }}
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: {{ .Values.deployment.secretfile }}
|
||||||
24
durpapi/templates/hpa.yaml
Normal file
24
durpapi/templates/hpa.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: autoscaling/v2
|
||||||
|
kind: HorizontalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Chart.Name }}-hpa"
|
||||||
|
spec:
|
||||||
|
scaleTargetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
name: {{ .Chart.Name }}
|
||||||
|
minReplicas: {{ .Values.deployment.hpa.minReplicas }}
|
||||||
|
maxReplicas: {{ .Values.deployment.hpa.maxReplicas }}
|
||||||
|
metrics:
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: memory
|
||||||
|
target:
|
||||||
|
type: Utilization
|
||||||
|
averageUtilization: 80
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: cpu
|
||||||
|
target:
|
||||||
|
type: Utilization
|
||||||
|
averageUtilization: 40
|
||||||
44
durpapi/templates/ingress.yaml
Normal file
44
durpapi/templates/ingress.yaml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Chart.Name }}-ingress"
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host("api.durp.info") && PathPrefix(`/api`)
|
||||||
|
kind: Rule
|
||||||
|
middlewares:
|
||||||
|
- name: jwt
|
||||||
|
services:
|
||||||
|
- name: "durpapi-service"
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Chart.Name }}-swagger"
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host("api.durp.info") && PathPrefix(`/swagger`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: "durpapi-service"
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: jwt
|
||||||
|
spec:
|
||||||
|
plugin:
|
||||||
|
jwt:
|
||||||
|
Required: true
|
||||||
|
Keys:
|
||||||
|
- https://authentik.durp.info/application/o/api/jwks
|
||||||
39
durpapi/templates/secrets.yaml
Normal file
39
durpapi/templates/secrets.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: durpapi-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: durpapi-secret
|
||||||
|
data:
|
||||||
|
- secretKey: db_host
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpapi/postgres
|
||||||
|
property: db_host
|
||||||
|
- secretKey: db_port
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpapi/postgres
|
||||||
|
property: db_port
|
||||||
|
- secretKey: db_pass
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpapi/postgres
|
||||||
|
property: db_pass
|
||||||
|
- secretKey: db_user
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpapi/postgres
|
||||||
|
property: db_user
|
||||||
|
- secretKey: db_sslmode
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpapi/postgres
|
||||||
|
property: db_sslmode
|
||||||
|
- secretKey: db_name
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpapi/postgres
|
||||||
|
property: db_name
|
||||||
|
- secretKey: llamaurl
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpapi/llamaurl
|
||||||
|
property: llamaurl
|
||||||
12
durpapi/templates/service.yaml
Normal file
12
durpapi/templates/service.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Chart.Name }}-service"
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: {{ .Values.service.port }}
|
||||||
|
targetPort: {{ .Values.service.targetport }}
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
app: {{ .Chart.Name }}
|
||||||
39
durpapi/values.yaml
Normal file
39
durpapi/values.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
deployment:
|
||||||
|
image: registry.internal.durp.info/developerdurp/durpapi
|
||||||
|
secretfile: durpapi-secret
|
||||||
|
imagePullPolicy: Always
|
||||||
|
hpa:
|
||||||
|
minReplicas: 3
|
||||||
|
maxReplicas: 10
|
||||||
|
probe:
|
||||||
|
readiness:
|
||||||
|
httpGet:
|
||||||
|
path: /health/gethealth
|
||||||
|
port: 8080
|
||||||
|
liveness:
|
||||||
|
httpGet:
|
||||||
|
path: /health/gethealth
|
||||||
|
port: 8080
|
||||||
|
startup:
|
||||||
|
httpGet:
|
||||||
|
path: /health/gethealth
|
||||||
|
port: 8080
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 80
|
||||||
|
targetport: 8080
|
||||||
|
|
||||||
|
swagger:
|
||||||
|
host: api.durp.info
|
||||||
|
postgresql:
|
||||||
|
enabled: true
|
||||||
|
auth:
|
||||||
|
existingSecret: durpapi-secret
|
||||||
|
secretKeys:
|
||||||
|
adminPasswordKey: db_pass
|
||||||
|
userPasswordKey: db_pass
|
||||||
|
replicationPasswordKey: db_pass
|
||||||
|
database: postgres
|
||||||
|
username: postgres
|
||||||
11
durpot/Chart.yaml
Normal file
11
durpot/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: durpapi
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
version: 0.0.1
|
||||||
|
appVersion: 0.0.1
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: durpot
|
||||||
|
repository: https://gitlab.com/api/v4/projects/45025485/packages/helm/stable
|
||||||
|
version: 0.1.0-dev0038
|
||||||
43
durpot/templates/secrets.yaml
Normal file
43
durpot/templates/secrets.yaml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: durpot-secert
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: durpot-secret
|
||||||
|
data:
|
||||||
|
- secretKey: OPENAI_API_KEY
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpot/openai
|
||||||
|
property: OPENAI_API_KEY
|
||||||
|
- secretKey: BOTPREFIX
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpot/discord
|
||||||
|
property: BOTPREFIX
|
||||||
|
- secretKey: ChannelID
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpot/discord
|
||||||
|
property: ChannelID
|
||||||
|
- secretKey: TOKEN
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpot/discord
|
||||||
|
property: TOKEN
|
||||||
|
- secretKey: ClientID
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpot/auth
|
||||||
|
property: ClientID
|
||||||
|
- secretKey: Password
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpot/auth
|
||||||
|
property: Password
|
||||||
|
- secretKey: TokenURL
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpot/auth
|
||||||
|
property: TokenURL
|
||||||
|
- secretKey: Username
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/durpot/auth
|
||||||
|
property: Username
|
||||||
@@ -4,7 +4,7 @@ external-dns:
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
pullPolicy: Always
|
pullPolicy: Always
|
||||||
txtPrefix: "dmz-"
|
|
||||||
sources:
|
sources:
|
||||||
- service
|
- service
|
||||||
|
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
apiVersion: external-secrets.io/v1beta1
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
metadata:
|
|
||||||
name: vault
|
|
||||||
spec:
|
|
||||||
provider:
|
|
||||||
vault:
|
|
||||||
server: "https://vault.internal.prd.durp.info"
|
|
||||||
path: "secrets"
|
|
||||||
version: "v2"
|
|
||||||
auth:
|
|
||||||
kubernetes:
|
|
||||||
mountPath: "kubernetes"
|
|
||||||
role: "dmz-external-secrets"
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: external-secrets.io/v1beta1
|
|
||||||
kind: ExternalSecret
|
|
||||||
metadata:
|
|
||||||
name: cloudflare-api-token-secret
|
|
||||||
spec:
|
|
||||||
secretStoreRef:
|
|
||||||
name: vault
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
target:
|
|
||||||
name: cloudflare-api-token-secret
|
|
||||||
data:
|
|
||||||
- secretKey: cloudflare-api-token-secret
|
|
||||||
remoteRef:
|
|
||||||
key: secrets/cert-manager
|
|
||||||
property: cloudflare-api-token-secret
|
|
||||||
|
|
||||||
11
heimdall/Chart.yaml
Normal file
11
heimdall/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: heimdall
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
version: 0.0.1
|
||||||
|
appVersion: 0.0.1
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: heimdall
|
||||||
|
repository: https://djjudas21.github.io/charts/
|
||||||
|
version: 8.5.2
|
||||||
52
heimdall/templates/ingress.yaml
Normal file
52
heimdall/templates/ingress.yaml
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
name: heimdall-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`heimdall.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: authentik-proxy-provider
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: heimdall
|
||||||
|
port: 80
|
||||||
|
- match: Host(`heimdall.durp.info`) && PathPrefix(`/outpost.goauthentik.io`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: ak-outpost-authentik-embedded-outpost
|
||||||
|
namespace: authentik
|
||||||
|
port: 9000
|
||||||
|
tls:
|
||||||
|
secretName: heimdall-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: heimdall-tls
|
||||||
|
spec:
|
||||||
|
secretName: heimdall-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "heimdall.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "heimdall.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: heimdall-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: heimdall.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
28
heimdall/values.yaml
Normal file
28
heimdall/values.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
heimdall:
|
||||||
|
|
||||||
|
image:
|
||||||
|
registry:
|
||||||
|
repository: registry.internal.durp.info/linuxserver/heimdall
|
||||||
|
pullPolicy: Always
|
||||||
|
|
||||||
|
env:
|
||||||
|
TZ: UTC
|
||||||
|
PUID: "1000"
|
||||||
|
PGID: "1000"
|
||||||
|
|
||||||
|
service:
|
||||||
|
main:
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: heimdall.durp.info
|
||||||
|
external-dns.alpha.kubernetes.io/target: home.durp.info
|
||||||
|
ports:
|
||||||
|
http:
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
main:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
enabled: true
|
||||||
63
internalproxy/templates/blueiris.yaml
Normal file
63
internalproxy/templates/blueiris.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: blueiris
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 81
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 81
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: blueiris
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.99.2
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 81
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: blueiris-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`blueiris.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: blueiris
|
||||||
|
port: 81
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: blueiris-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: blueiris-tls
|
||||||
|
spec:
|
||||||
|
secretName: blueiris-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "blueiris.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "blueiris.internal.durp.info"
|
||||||
@@ -1,3 +1,66 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: gitea
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 3000
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 3000
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: gitea
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.253
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 3000
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: gitea-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`gitea.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: gitea
|
||||||
|
port: 3000
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: gitea-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: gitea-tls
|
||||||
|
spec:
|
||||||
|
secretName: gitea-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "gitea.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "gitea.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
kind: Service
|
kind: Service
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
metadata:
|
metadata:
|
||||||
|
|||||||
@@ -1,71 +0,0 @@
|
|||||||
kind: Service
|
|
||||||
apiVersion: v1
|
|
||||||
metadata:
|
|
||||||
name: guac-external-dns
|
|
||||||
annotations:
|
|
||||||
external-dns.alpha.kubernetes.io/hostname: guac.durp.info
|
|
||||||
spec:
|
|
||||||
type: ExternalName
|
|
||||||
externalName: durp.info
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: guac
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- name: app
|
|
||||||
port: 8082
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 8082
|
|
||||||
clusterIP: None
|
|
||||||
type: ClusterIP
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Endpoints
|
|
||||||
metadata:
|
|
||||||
name: guac
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 192.168.20.253
|
|
||||||
ports:
|
|
||||||
- name: app
|
|
||||||
port: 8082
|
|
||||||
protocol: TCP
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
name: guac-ingress
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- match: Host(`guac.durp.info`) && PathPrefix(`/`)
|
|
||||||
kind: Rule
|
|
||||||
services:
|
|
||||||
- name: guac
|
|
||||||
port: 8082
|
|
||||||
tls:
|
|
||||||
secretName: guac-tls
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: cert-manager.io/v1
|
|
||||||
kind: Certificate
|
|
||||||
metadata:
|
|
||||||
name: guac-tls
|
|
||||||
spec:
|
|
||||||
secretName: guac-tls
|
|
||||||
issuerRef:
|
|
||||||
name: letsencrypt-production
|
|
||||||
kind: ClusterIssuer
|
|
||||||
commonName: "guac.durp.info"
|
|
||||||
dnsNames:
|
|
||||||
- "guac.durp.info"
|
|
||||||
@@ -1,3 +1,66 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: jellyfin
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8096
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8096
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: jellyfin
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.253
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8096
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: jellyfin-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`jellyfin.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: jellyfin
|
||||||
|
port: 8096
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: jellyfin-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: jellyfin-tls
|
||||||
|
spec:
|
||||||
|
secretName: jellyfin-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "jellyfin.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "jellyfin.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
kind: Service
|
kind: Service
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
metadata:
|
metadata:
|
||||||
|
|||||||
@@ -1,3 +1,66 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: kasm
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 443
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: kasm
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.104
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: kasm-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`kasm.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: kasm
|
||||||
|
port: 443
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: kasm-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: kasm-tls
|
||||||
|
spec:
|
||||||
|
secretName: kasm-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "kasm.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "kasm.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
kind: Service
|
kind: Service
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
metadata:
|
metadata:
|
||||||
|
|||||||
63
internalproxy/templates/minio.yaml
Normal file
63
internalproxy/templates/minio.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: minio
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9769
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9769
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: minio
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.253
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9769
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: minio-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`minio.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: minio
|
||||||
|
port: 9769
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: minio-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: minio-tls
|
||||||
|
spec:
|
||||||
|
secretName: minio-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "minio.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "minio.internal.durp.info"
|
||||||
63
internalproxy/templates/octopus.yaml
Normal file
63
internalproxy/templates/octopus.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: octopus
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 443
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: octopus
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.105
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: octopus-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`octopus.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: octopus
|
||||||
|
port: 443
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: octopus-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: octopus-tls
|
||||||
|
spec:
|
||||||
|
secretName: octopus-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "octopus.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "octopus.internal.durp.info"
|
||||||
101
internalproxy/templates/ollama.yaml
Normal file
101
internalproxy/templates/ollama.yaml
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: ollama-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: ollama-secret
|
||||||
|
data:
|
||||||
|
- secretKey: users
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/internalproxy/ollama
|
||||||
|
property: users
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: ollama-basic-auth
|
||||||
|
spec:
|
||||||
|
basicAuth:
|
||||||
|
secret: ollama-secret
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: ollama
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 11435
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 11435
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: ollama
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.104
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 11435
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: ollama-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`ollama.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: ollama-basic-auth
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: ollama
|
||||||
|
port: 11435
|
||||||
|
tls:
|
||||||
|
secretName: ollama-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: ollama-tls
|
||||||
|
spec:
|
||||||
|
secretName: ollama-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "ollama.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "ollama.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: ollama-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: ollama.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
63
internalproxy/templates/pfsense.yaml
Normal file
63
internalproxy/templates/pfsense.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: pfsense
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 10443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 10443
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: pfsense
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.1
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 10443
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: pfsense-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`pfsense.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: pfsense
|
||||||
|
port: 10443
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: pfsense-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: pfsense-tls
|
||||||
|
spec:
|
||||||
|
secretName: pfsense-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "pfsense.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "pfsense.internal.durp.info"
|
||||||
@@ -1,3 +1,66 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: plex
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 32400
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 32400
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: plex
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.253
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 32400
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: plex-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`plex.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: plex
|
||||||
|
port: 32400
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: plex-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: plex-tls
|
||||||
|
spec:
|
||||||
|
secretName: plex-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "plex.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "plex.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
kind: Service
|
kind: Service
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
metadata:
|
metadata:
|
||||||
|
|||||||
63
internalproxy/templates/portainer.yaml
Normal file
63
internalproxy/templates/portainer.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: portainer
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9443
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: portainer
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.104
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9443
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: portainer-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`portainer.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: portainer
|
||||||
|
port: 9443
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: portainer-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: portainer-tls
|
||||||
|
spec:
|
||||||
|
secretName: portainer-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "portainer.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "portainer.internal.durp.info"
|
||||||
63
internalproxy/templates/proxmox.yaml
Normal file
63
internalproxy/templates/proxmox.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: proxmox
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8006
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8006
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: proxmox
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.21.252
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 8006
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: proxmox-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`proxmox.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: proxmox
|
||||||
|
port: 8006
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: proxmox-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: proxmox-tls
|
||||||
|
spec:
|
||||||
|
secretName: proxmox-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "proxmox.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "proxmox.internal.durp.info"
|
||||||
@@ -5,9 +5,9 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
ports:
|
ports:
|
||||||
- name: app
|
- name: app
|
||||||
port: 5001
|
port: 5000
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
targetPort: 5001
|
targetPort: 5000
|
||||||
clusterIP: None
|
clusterIP: None
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ subsets:
|
|||||||
- ip: 192.168.20.253
|
- ip: 192.168.20.253
|
||||||
ports:
|
ports:
|
||||||
- name: app
|
- name: app
|
||||||
port: 5001
|
port: 5000
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -39,9 +39,9 @@ spec:
|
|||||||
kind: Rule
|
kind: Rule
|
||||||
services:
|
services:
|
||||||
- name: registry-internal
|
- name: registry-internal
|
||||||
port: 5001
|
port: 5000
|
||||||
tls:
|
tls:
|
||||||
secretName: registry-tls
|
secretName: registry-internal-tls
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -54,6 +54,6 @@ spec:
|
|||||||
issuerRef:
|
issuerRef:
|
||||||
name: letsencrypt-production
|
name: letsencrypt-production
|
||||||
kind: ClusterIssuer
|
kind: ClusterIssuer
|
||||||
commonName: "registry.durp.info"
|
commonName: "registry.internal.durp.info"
|
||||||
dnsNames:
|
dnsNames:
|
||||||
- "registry.durp.info"
|
- "registry.internal.durp.info"
|
||||||
|
|||||||
63
internalproxy/templates/s3.yaml
Normal file
63
internalproxy/templates/s3.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: s3
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9768
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9768
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: s3
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.253
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 9768
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: s3-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`s3.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: s3
|
||||||
|
port: 9768
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: s3-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: s3-tls
|
||||||
|
spec:
|
||||||
|
secretName: s3-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "s3.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "s3.internal.durp.info"
|
||||||
63
internalproxy/templates/semaphore.yaml
Normal file
63
internalproxy/templates/semaphore.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: semaphore
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 3001
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 3001
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: semaphore
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.253
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 3001
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: semaphore-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`semaphore.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: semaphore
|
||||||
|
port: 3001
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: semaphore-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: semaphore-tls
|
||||||
|
spec:
|
||||||
|
secretName: semaphore-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "semaphore.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "semaphore.internal.durp.info"
|
||||||
63
internalproxy/templates/unraid.yaml
Normal file
63
internalproxy/templates/unraid.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: unraid
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 443
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: unraid
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.253
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: unraid-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`unraid.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: unraid
|
||||||
|
port: 443
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: unraid-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: unraid-tls
|
||||||
|
spec:
|
||||||
|
secretName: unraid-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "unraid.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "unraid.internal.durp.info"
|
||||||
63
internalproxy/templates/wazuh.yaml
Normal file
63
internalproxy/templates/wazuh.yaml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: wazuh
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 443
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: wazuh
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 192.168.20.102
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: wazuh-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`wazuh.internal.durp.info`) && PathPrefix(`/`)
|
||||||
|
middlewares:
|
||||||
|
- name: whitelist
|
||||||
|
namespace: traefik
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: wazuh
|
||||||
|
port: 443
|
||||||
|
scheme: https
|
||||||
|
tls:
|
||||||
|
secretName: wazuh-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: wazuh-tls
|
||||||
|
spec:
|
||||||
|
secretName: wazuh-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "wazuh.internal.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "wazuh.internal.durp.info"
|
||||||
7
krakend/Chart.yaml
Normal file
7
krakend/Chart.yaml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: krakend
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
|
||||||
|
version: 0.1.0
|
||||||
|
appVersion: "1.16.0"
|
||||||
39
krakend/templates/deployments.yaml
Normal file
39
krakend/templates/deployments.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
namespace: krakend
|
||||||
|
name: krakend
|
||||||
|
labels:
|
||||||
|
app: krakend
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: krakend
|
||||||
|
replicas: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: krakend
|
||||||
|
spec:
|
||||||
|
volumes:
|
||||||
|
- name: krakend-secret
|
||||||
|
secret:
|
||||||
|
secretName: krakend-secret
|
||||||
|
containers:
|
||||||
|
- name: krakend
|
||||||
|
image: registry.internal.durp.info/devopsfaith/krakend:2.4.3
|
||||||
|
imagePullPolicy: Always
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /__health
|
||||||
|
port: 8080
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /__health
|
||||||
|
port: 8080
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8080
|
||||||
|
volumeMounts:
|
||||||
|
- name: krakend-secret
|
||||||
|
mountPath: /etc/krakend
|
||||||
56
krakend/templates/ingress.yaml
Normal file
56
krakend/templates/ingress.yaml
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: api-tls
|
||||||
|
spec:
|
||||||
|
secretName: api-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "api.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "api.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: krakend-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`api.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: krakend-service
|
||||||
|
port: 8080
|
||||||
|
scheme: http
|
||||||
|
tls:
|
||||||
|
secretName: api-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: api-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: api.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: api-developer-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: developer.durp.info
|
||||||
|
external-dns.alpha.kubernetes.io/cloudflare-proxied: "false"
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: developerdurp.github.io
|
||||||
15
krakend/templates/secrets.yaml
Normal file
15
krakend/templates/secrets.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: krakend-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: krakend-secret
|
||||||
|
data:
|
||||||
|
- secretKey: krakend.json
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/krakend/config
|
||||||
|
property: config
|
||||||
12
krakend/templates/service.yaml
Normal file
12
krakend/templates/service.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: krakend-service
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8080
|
||||||
|
targetPort: 8080
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
app: krakend
|
||||||
0
littlelink/Chart.yaml
Normal file
0
littlelink/Chart.yaml
Normal file
99
littlelink/templates/deployment.yaml
Normal file
99
littlelink/templates/deployment.yaml
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
namespace: littlelink
|
||||||
|
name: littlelink
|
||||||
|
labels:
|
||||||
|
app: littlelink
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: littlelink
|
||||||
|
replicas: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: littlelink
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: littlelink
|
||||||
|
image: registry.internal.durp.info/techno-tim/littlelink-server:latest
|
||||||
|
imagePullPolicy: Always
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthcheck
|
||||||
|
port: 3000
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthcheck
|
||||||
|
port: 3000
|
||||||
|
env:
|
||||||
|
- name: META_TITLE
|
||||||
|
value: DeveloperDurp
|
||||||
|
- name: META_DESCRIPTION
|
||||||
|
value: The Durpy Developer
|
||||||
|
- name: META_AUTHOR
|
||||||
|
value: DeveloperDurp
|
||||||
|
- name: LANG
|
||||||
|
value: en
|
||||||
|
- name: META_INDEX_STATUS
|
||||||
|
value: all
|
||||||
|
- name: OG_TITLE
|
||||||
|
value: DeveloperDurp
|
||||||
|
- name: OG_DESCRIPTION
|
||||||
|
value: DeveloperDurp
|
||||||
|
- name: OG_URL
|
||||||
|
value: https://gitlab.com/developerdurp
|
||||||
|
- name: OG_IMAGE
|
||||||
|
value: https://gitlab.com/uploads/-/system/user/avatar/9987937/avatar.png
|
||||||
|
- name : OG_IMAGE_WIDTH
|
||||||
|
value: "400"
|
||||||
|
- name : OG_IMAGE_HEIGHT
|
||||||
|
value: "400"
|
||||||
|
- name : THEME
|
||||||
|
value: Dark
|
||||||
|
- name : FAVICON_URL
|
||||||
|
value: https://gitlab.com/uploads/-/system/user/avatar/9987937/avatar.png
|
||||||
|
- name : AVATAR_URL
|
||||||
|
value: https://gitlab.com/uploads/-/system/user/avatar/9987937/avatar.png
|
||||||
|
- name : AVATAR_2X_URL
|
||||||
|
value: https://gitlab.com/uploads/-/system/user/avatar/9987937/avatar.png
|
||||||
|
- name : AVATAR_ALT
|
||||||
|
value: DeveloperDurp Profile Pic
|
||||||
|
- name : NAME
|
||||||
|
value: DeveloperDurp
|
||||||
|
- name : BIO
|
||||||
|
value: Sup Nerd,
|
||||||
|
- name : BUTTON_ORDER
|
||||||
|
value: GITHUB,GITLAB,YOUTUBE,TWITTER,COFFEE,EMAIL
|
||||||
|
- name : TWITTER
|
||||||
|
value: https://twitter.com/developerdurp
|
||||||
|
- name : GITHUB
|
||||||
|
value: https://github.com/DeveloperDurp
|
||||||
|
- name : GITLAB
|
||||||
|
value: https://gitlab.com/developerdurp
|
||||||
|
- name: YOUTUBE
|
||||||
|
value: https://www.youtube.com/channel/UC1rGa6s6kER_gLpIQsxeMVQ
|
||||||
|
- name : EMAIL
|
||||||
|
value: DeveloperDurp@durp.info
|
||||||
|
- name : EMAIL_TEXT
|
||||||
|
value: DeveloperDurp@durp.info
|
||||||
|
- name : FOOTER
|
||||||
|
value: DeveloperDurp © 2022
|
||||||
|
- name: CUSTOM_BUTTON_TEXT
|
||||||
|
value: BuyMeACoffee
|
||||||
|
- name: CUSTOM_BUTTON_URL
|
||||||
|
value: https://www.buymeacoffee.com/DeveloperDurp
|
||||||
|
- name: CUSTOM_BUTTON_COLOR
|
||||||
|
value: '#ffdd00'
|
||||||
|
- name: CUSTOM_BUTTON_TEXT_COLOR
|
||||||
|
value: '#000000'
|
||||||
|
- name: CUSTOM_BUTTON_ALT_TEXT
|
||||||
|
value: Support
|
||||||
|
- name: CUSTOM_BUTTON_NAME
|
||||||
|
value: COFFEE
|
||||||
|
- name: CUSTOM_BUTTON_ICON
|
||||||
|
value: fa-solid fa-cup-togo
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 3000
|
||||||
42
littlelink/templates/ingress.yaml
Normal file
42
littlelink/templates/ingress.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: littlelink-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`links.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: littlelink
|
||||||
|
port: 80
|
||||||
|
tls:
|
||||||
|
secretName: littlelink-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: littlelink-tls
|
||||||
|
spec:
|
||||||
|
secretName: littlelink-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "links.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "links.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: links-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: links.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
12
littlelink/templates/service.yaml
Normal file
12
littlelink/templates/service.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: littlelink
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 3000
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
app: littlelink
|
||||||
@@ -9,4 +9,4 @@ appVersion: "1.16.0"
|
|||||||
dependencies:
|
dependencies:
|
||||||
- name: longhorn
|
- name: longhorn
|
||||||
repository: https://charts.longhorn.io
|
repository: https://charts.longhorn.io
|
||||||
version: 1.3.2
|
version: 1.5.5
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ longhorn:
|
|||||||
{
|
{
|
||||||
"name":"backup",
|
"name":"backup",
|
||||||
"task":"backup",
|
"task":"backup",
|
||||||
"cron":"0 */6 * * *",
|
"cron":"0 0 * * ?",
|
||||||
"retain":24
|
"retain":24
|
||||||
}
|
}
|
||||||
]'
|
]'
|
||||||
@@ -76,7 +76,7 @@ longhorn:
|
|||||||
snapshotterReplicaCount: ~
|
snapshotterReplicaCount: ~
|
||||||
|
|
||||||
defaultSettings:
|
defaultSettings:
|
||||||
backupTarget: S3://longhorn@us-east-1/
|
backupTarget: S3://longhorn-master@us-east-1/
|
||||||
backupTargetCredentialSecret: longhorn-backup-token-secret
|
backupTargetCredentialSecret: longhorn-backup-token-secret
|
||||||
allowRecurringJobWhileVolumeDetached: ~
|
allowRecurringJobWhileVolumeDetached: ~
|
||||||
createDefaultDiskLabeledNodes: ~
|
createDefaultDiskLabeledNodes: ~
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ metadata:
|
|||||||
name: cheap
|
name: cheap
|
||||||
spec:
|
spec:
|
||||||
addresses:
|
addresses:
|
||||||
- 192.168.20.34-192.168.20.39
|
- 192.168.20.130-192.168.20.140
|
||||||
---
|
---
|
||||||
apiVersion: metallb.io/v1beta1
|
apiVersion: metallb.io/v1beta1
|
||||||
kind: L2Advertisement
|
kind: L2Advertisement
|
||||||
metadata:
|
metadata:
|
||||||
name: pool
|
name: poop
|
||||||
namespace: metallb-system
|
namespace: metallb-system
|
||||||
spec:
|
spec:
|
||||||
ipAddressPools:
|
ipAddressPools:
|
||||||
|
|||||||
8
nfs-client/Chart.yml
Normal file
8
nfs-client/Chart.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: nfs-client
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
|
||||||
|
version: 0.1.0
|
||||||
|
appVersion: "1.16.0"
|
||||||
|
|
||||||
12
nfs-client/templates/cluster-role-binding.yml
Normal file
12
nfs-client/templates/cluster-role-binding.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
kind: ClusterRoleBinding
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: run-nfs-client-provisioner
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: nfs-client-provisioner
|
||||||
|
namespace: nfs-client
|
||||||
|
roleRef:
|
||||||
|
kind: ClusterRole
|
||||||
|
name: nfs-client-provisioner-runner
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
20
nfs-client/templates/cluster-role.yml
Normal file
20
nfs-client/templates/cluster-role.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
kind: ClusterRole
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: nfs-client-provisioner-runner
|
||||||
|
rules:
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: ["persistentvolumes"]
|
||||||
|
verbs: ["get", "list", "watch", "create", "delete"]
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: ["persistentvolumeclaims"]
|
||||||
|
verbs: ["get", "list", "watch", "update"]
|
||||||
|
- apiGroups: ["storage.k8s.io"]
|
||||||
|
resources: ["storageclasses"]
|
||||||
|
verbs: ["get", "list", "watch"]
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: ["events"]
|
||||||
|
verbs: ["create", "update", "patch"]
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: ["endpoints"]
|
||||||
|
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||||
42
nfs-client/templates/provisioner.yml
Normal file
42
nfs-client/templates/provisioner.yml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
kind: Deployment
|
||||||
|
apiVersion: apps/v1
|
||||||
|
metadata:
|
||||||
|
name: nfs-client-provisioner
|
||||||
|
namespace: nfs-client
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: nfs-client-provisioner
|
||||||
|
replicas: 1
|
||||||
|
strategy:
|
||||||
|
type: Recreate
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: nfs-client-provisioner
|
||||||
|
spec:
|
||||||
|
serviceAccountName: nfs-client-provisioner
|
||||||
|
containers:
|
||||||
|
- name: nfs-client-provisioner
|
||||||
|
image: gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner:v4.0.0
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 512Mi
|
||||||
|
limits:
|
||||||
|
memory: 1Gi
|
||||||
|
volumeMounts:
|
||||||
|
- name: nfs-client-ssd
|
||||||
|
mountPath: /persistentvolumes
|
||||||
|
env:
|
||||||
|
- name: PROVISIONER_NAME
|
||||||
|
value: durp.info/nfs
|
||||||
|
- name: NFS_SERVER
|
||||||
|
value: 192.168.20.253
|
||||||
|
- name: NFS_PATH
|
||||||
|
value: /mnt/user/k3s
|
||||||
|
volumes:
|
||||||
|
- name: nfs-client-ssd
|
||||||
|
nfs:
|
||||||
|
server: 192.168.20.253
|
||||||
|
path: /mnt/user/k3s
|
||||||
13
nfs-client/templates/role-binding.yml
Normal file
13
nfs-client/templates/role-binding.yml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
kind: RoleBinding
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: leader-locking-nfs-client-provisioner
|
||||||
|
namespace: nfs-client
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: nfs-client-provisioner
|
||||||
|
namespace: nfs-client
|
||||||
|
roleRef:
|
||||||
|
kind: Role
|
||||||
|
name: leader-locking-nfs-client-provisioner
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
9
nfs-client/templates/role.yml
Normal file
9
nfs-client/templates/role.yml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
kind: Role
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: leader-locking-nfs-client-provisioner
|
||||||
|
namespace: nfs-client
|
||||||
|
rules:
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: ["endpoints"]
|
||||||
|
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||||
5
nfs-client/templates/service-account.yml
Normal file
5
nfs-client/templates/service-account.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
kind: ServiceAccount
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: nfs-client-provisioner
|
||||||
|
namespace: nfs-client
|
||||||
10
nfs-client/templates/storage-class.yml
Normal file
10
nfs-client/templates/storage-class.yml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: storage.k8s.io/v1
|
||||||
|
kind: StorageClass
|
||||||
|
metadata:
|
||||||
|
name: nfs-storage
|
||||||
|
annotations:
|
||||||
|
storageclass.kubernetes.io/is-default-class: "false"
|
||||||
|
provisioner: durp.info/nfs
|
||||||
|
parameters:
|
||||||
|
archiveOnDelete: "false"
|
||||||
|
reclaimPolicy: Retain
|
||||||
7
open-webui/Chart.yaml
Normal file
7
open-webui/Chart.yaml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: open-webui
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
|
||||||
|
version: 0.1.0
|
||||||
|
appVersion: "1.16.0"
|
||||||
37
open-webui/templates/deployment.yaml
Normal file
37
open-webui/templates/deployment.yaml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
namespace: open-webui
|
||||||
|
name: open-webui
|
||||||
|
labels:
|
||||||
|
app: open-webui
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: open-webui
|
||||||
|
replicas: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: open-webui
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: open-webui
|
||||||
|
image: registry.internal.durp.info/open-webui/open-webui:main
|
||||||
|
imagePullPolicy: Always
|
||||||
|
volumeMounts:
|
||||||
|
- name: open-webui-pvc
|
||||||
|
mountPath: /app/backend/data
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8080
|
||||||
|
env:
|
||||||
|
- name: OLLAMA_BASE_URL
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: open-webui-secret
|
||||||
|
key: OLLAMA_BASE_URL
|
||||||
|
volumes:
|
||||||
|
- name: open-webui-pvc
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: open-webui-pvc
|
||||||
42
open-webui/templates/ingress.yaml
Normal file
42
open-webui/templates/ingress.yaml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: open-webui-ingress
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`open-webui.durp.info`) && PathPrefix(`/`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: open-webui
|
||||||
|
port: 8080
|
||||||
|
tls:
|
||||||
|
secretName: open-webui-tls
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: cert-manager.io/v1
|
||||||
|
kind: Certificate
|
||||||
|
metadata:
|
||||||
|
name: open-webui-tls
|
||||||
|
spec:
|
||||||
|
secretName: open-webui-tls
|
||||||
|
issuerRef:
|
||||||
|
name: letsencrypt-production
|
||||||
|
kind: ClusterIssuer
|
||||||
|
commonName: "open-webui.durp.info"
|
||||||
|
dnsNames:
|
||||||
|
- "open-webui.durp.info"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
kind: Service
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: open-webui-external-dns
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/hostname: open-webui.durp.info
|
||||||
|
spec:
|
||||||
|
type: ExternalName
|
||||||
|
externalName: durp.info
|
||||||
11
open-webui/templates/pvc.yaml
Normal file
11
open-webui/templates/pvc.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: open-webui-pvc
|
||||||
|
spec:
|
||||||
|
storageClassName: longhorn
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 10Gi
|
||||||
16
open-webui/templates/secrets.yaml
Normal file
16
open-webui/templates/secrets.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: open-webui-secret
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: open-webui-secret
|
||||||
|
data:
|
||||||
|
- secretKey: OLLAMA_BASE_URL
|
||||||
|
remoteRef:
|
||||||
|
key: secrets/open-webui
|
||||||
|
property: OLLAMA_BASE_URL
|
||||||
|
|
||||||
12
open-webui/templates/service.yaml
Normal file
12
open-webui/templates/service.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: open-webui
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8080
|
||||||
|
targetPort: 8080
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
app: open-webui
|
||||||
@@ -32,3 +32,5 @@ spec:
|
|||||||
sourceRange:
|
sourceRange:
|
||||||
- 192.168.20.1/32
|
- 192.168.20.1/32
|
||||||
- 10.0.0.0/8
|
- 10.0.0.0/8
|
||||||
|
- 192.168.30.0/24
|
||||||
|
- 192.168.130.0/24
|
||||||
|
|||||||
@@ -730,22 +730,22 @@ traefik:
|
|||||||
## Create HorizontalPodAutoscaler object.
|
## Create HorizontalPodAutoscaler object.
|
||||||
##
|
##
|
||||||
autoscaling:
|
autoscaling:
|
||||||
enabled: false
|
enabled: true
|
||||||
minReplicas: 1
|
minReplicas: 3
|
||||||
maxReplicas: 10
|
maxReplicas: 10
|
||||||
metrics:
|
metrics:
|
||||||
- type: Resource
|
|
||||||
resource:
|
|
||||||
name: cpu
|
|
||||||
target:
|
|
||||||
type: Utilization
|
|
||||||
averageUtilization: 60
|
|
||||||
- type: Resource
|
- type: Resource
|
||||||
resource:
|
resource:
|
||||||
name: memory
|
name: memory
|
||||||
target:
|
target:
|
||||||
type: Utilization
|
type: Utilization
|
||||||
averageUtilization: 60
|
averageUtilization: 80
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: cpu
|
||||||
|
target:
|
||||||
|
type: Utilization
|
||||||
|
averageUtilization: 80
|
||||||
behavior:
|
behavior:
|
||||||
scaleDown:
|
scaleDown:
|
||||||
stabilizationWindowSeconds: 300
|
stabilizationWindowSeconds: 300
|
||||||
@@ -819,13 +819,13 @@ traefik:
|
|||||||
# Additional serviceAccount annotations (e.g. for oidc authentication)
|
# Additional serviceAccount annotations (e.g. for oidc authentication)
|
||||||
serviceAccountAnnotations: {}
|
serviceAccountAnnotations: {}
|
||||||
|
|
||||||
resources: {}
|
resources:
|
||||||
# requests:
|
requests:
|
||||||
# cpu: "100m"
|
cpu: "100m"
|
||||||
# memory: "50Mi"
|
memory: "128Mi"
|
||||||
# limits:
|
limits:
|
||||||
# cpu: "300m"
|
cpu: "300m"
|
||||||
# memory: "150Mi"
|
memory: "256Mi"
|
||||||
|
|
||||||
# This example pod anti-affinity forces the scheduler to put traefik pods
|
# This example pod anti-affinity forces the scheduler to put traefik pods
|
||||||
# on nodes where no other traefik pods are scheduled.
|
# on nodes where no other traefik pods are scheduled.
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user