150 Commits

Author SHA1 Message Date
985a291936 update 2025-01-21 05:42:08 -06:00
1490ef6c5e update 2025-01-21 05:40:38 -06:00
b45a04349e update 2025-01-21 05:36:24 -06:00
685dcde9c3 update 2025-01-21 05:12:47 -06:00
d18d64f0eb update 2025-01-21 05:02:56 -06:00
c3110978c7 update 2025-01-21 05:01:41 -06:00
03d69a40a0 update 2025-01-21 05:00:25 -06:00
a398e63650 update 2025-01-21 04:58:11 -06:00
5acce59cd1 update 2025-01-20 05:03:31 -06:00
9899459652 update 2025-01-20 05:01:13 -06:00
1c4624104a update 2025-01-19 13:51:52 -06:00
709def73de update 2025-01-19 13:25:12 -06:00
f0fd21ec86 update 2025-01-19 13:15:32 -06:00
7a6313f716 update 2025-01-19 13:12:27 -06:00
7dc22c2051 update 2025-01-19 13:10:58 -06:00
b3c020d810 update 2025-01-19 09:33:00 -06:00
ba19811491 update 2025-01-19 09:26:11 -06:00
c956f88f43 update 2025-01-19 09:07:29 -06:00
8e65ceca52 update 2025-01-19 09:03:53 -06:00
535a47a8f2 update 2025-01-19 08:53:43 -06:00
a9789b1221 update 2025-01-19 08:51:53 -06:00
87dd7d3da0 update 2025-01-19 08:47:39 -06:00
82ad8815f2 update 2025-01-16 06:00:29 -06:00
5089d01c06 update 2025-01-16 05:59:15 -06:00
f8f5f27cb0 add ingress 2025-01-16 05:55:52 -06:00
4c2e87944c update cert 2025-01-16 05:33:47 -06:00
b6fa1079b6 update 2025-01-15 06:15:44 -06:00
f5ceac3ec1 add vault 2025-01-15 06:00:30 -06:00
1966f141dc update config 2025-01-15 05:47:05 -06:00
f8d0229580 add metallb 2025-01-15 05:46:40 -06:00
e36610cd49 update 2025-01-15 05:42:45 -06:00
0c27dd360c add traefik to infra 2025-01-15 05:41:59 -06:00
user
e7c28dde45 update 2025-01-15 05:18:13 -06:00
user
41cc7889af ujpdate 2025-01-15 05:15:41 -06:00
user
f8899caf78 update 2025-01-15 05:12:37 -06:00
user
b47edf477b Add infra 2025-01-15 04:50:13 -06:00
54a82177f2 Update file deployment.yaml 2025-01-14 21:43:53 +00:00
f3684f197c Update file values.yaml 2025-01-11 14:41:37 +00:00
5f693d0020 Update file values.yaml 2025-01-11 14:40:35 +00:00
14a659df5b Update file values.yaml 2025-01-11 14:30:36 +00:00
46724e763c Update file s3.yaml 2025-01-11 14:27:01 +00:00
33c5d25271 remove top level files 2025-01-07 04:45:49 -06:00
99006a8900 Update folder location 2025-01-06 05:18:54 -06:00
a42b3e785d Update folder location 2025-01-06 05:14:52 -06:00
c39f20e371 Update folder location 2025-01-06 05:01:00 -06:00
dc324a2d8b Update whitelist 2025-01-04 07:17:43 -06:00
2d4d3773b7 Update ollama 2024-12-19 05:00:42 -06:00
54e12aa8c1 Update ollama auth 2024-12-15 08:04:32 -06:00
47d4e5015e Update ollama auth 2024-12-15 08:01:14 -06:00
e60030016e Update file ollama.yaml 2024-12-13 10:52:57 +00:00
6645dd77f6 update IP range 2024-11-17 10:24:23 -06:00
f1f8a9e837 update IP range 2024-11-17 10:14:22 -06:00
47214c5a93 Update file values.yaml 2024-10-15 11:12:18 +00:00
a1b05d6f8a Update chart version 2024-09-30 04:47:53 -05:00
8ca00e2715 Update chart version 2024-09-30 04:45:20 -05:00
7cbe7932f1 Update chart version 2024-09-30 04:41:20 -05:00
97d73b36c4 Update chart version 2024-09-29 08:56:15 -05:00
679742ab45 Update chart version 2024-09-29 08:55:44 -05:00
9b1680cfc8 Update chart version 2024-09-29 08:54:11 -05:00
dd3ca7c9a4 Update chart version 2024-09-29 08:51:08 -05:00
4a67df78b3 Update chart version 2024-09-29 08:45:48 -05:00
dde4eac238 Update chart version 2024-09-29 08:43:25 -05:00
f9987ac705 Update chart version 2024-09-29 08:43:01 -05:00
6705352a10 Update chart version 2024-09-29 08:41:06 -05:00
599e86e1a9 Update chart version 2024-09-29 08:37:42 -05:00
4826c5beb6 Update chart version 2024-09-29 08:33:29 -05:00
1284e2ec60 Update chart version 2024-09-29 08:28:14 -05:00
7f6e182084 Update chart version 2024-09-29 07:50:40 -05:00
a565952e0c Update chart version 2024-09-29 07:48:50 -05:00
f64bdfbedd Update chart version 2024-09-29 07:39:11 -05:00
e6a8aa74b4 Update chart version 2024-09-29 07:34:52 -05:00
b1c45f939b Update chart version 2024-09-29 07:29:39 -05:00
3bfec1450f Update chart version 2024-09-29 07:23:46 -05:00
d5224c0c7f Update chart version 2024-09-29 07:20:05 -05:00
4e37bfb8dc Update chart version 2024-09-29 07:13:09 -05:00
45ae3523b9 Update chart version 2024-09-29 06:43:58 -05:00
1151680f65 Update chart version 2024-09-29 06:42:16 -05:00
1aefb8163b Update chart version 2024-09-29 06:39:44 -05:00
e935822058 Update chart version 2024-09-29 06:35:39 -05:00
49b23b1788 Update chart version 2024-09-29 06:22:50 -05:00
bd2def6d46 Update chart version 2024-09-29 06:18:47 -05:00
10fcd43274 Update chart version 2024-09-13 06:23:48 -05:00
126c6e6f45 Update chart version 2024-09-13 06:20:00 -05:00
10ce90a460 Update chart version 2024-09-13 06:17:56 -05:00
c3cd2c0b8b Update chart version 2024-09-13 06:14:44 -05:00
8b74b2efb6 Update chart version 2024-09-13 06:10:15 -05:00
eecf949f86 Update worker count 2024-09-10 04:48:15 -05:00
2b951b2814 update authentik version 2024-09-10 04:43:57 -05:00
a1293abaf6 update 2024-08-31 07:40:14 -05:00
5781c6ddda update 2024-08-31 07:23:47 -05:00
42fc48bb27 update 2024-08-31 07:22:25 -05:00
0f908a1460 update 2024-08-31 07:19:33 -05:00
1febc6915e update 2024-08-31 07:14:08 -05:00
a99e0649dd update 2024-08-31 07:11:20 -05:00
d28f17120b upupdate 2024-08-30 05:08:33 -05:00
44d099ad9e update 2024-08-30 05:04:57 -05:00
5c866c2eb7 update 2024-08-30 05:04:25 -05:00
216cece298 update 2024-08-30 05:03:40 -05:00
f16da3d3a8 update resources 2024-08-30 04:58:02 -05:00
f12b7aa532 update resource 2024-08-30 04:56:01 -05:00
8ec254f59c enable autoscaller 2024-08-30 04:52:29 -05:00
33fd621ec8 add resource limits 2024-08-30 04:51:35 -05:00
89b8364fe5 add resource limits 2024-08-30 04:49:03 -05:00
52038a7585 update 2024-08-29 05:04:25 -05:00
885ab5e3d7 update 2024-08-29 05:02:08 -05:00
7843ae7c29 update 2024-08-29 04:57:40 -05:00
e2d1e01708 update 2024-08-29 04:55:28 -05:00
e8cafed885 update 2024-08-29 04:50:55 -05:00
62b7efad89 update 2024-08-27 04:58:07 -05:00
47ddf2fd28 update 2024-08-25 06:32:15 -05:00
31b689d5fe update 2024-08-25 06:28:15 -05:00
5ef03e6dbe update 2024-08-25 06:27:05 -05:00
38bb3538a3 update 2024-08-25 06:22:33 -05:00
8c77e53669 update 2024-08-25 06:20:12 -05:00
44aac27362 update 2024-08-25 06:19:34 -05:00
0f4048072d update 2024-08-25 06:11:13 -05:00
b6f0c41d5d update 2024-08-25 06:09:41 -05:00
3259cd6f37 update 2024-08-25 06:07:19 -05:00
418162a9e0 update 2024-08-25 05:43:48 -05:00
de022ea46b update 2024-08-25 05:33:43 -05:00
a50214eafc update 2024-08-25 05:32:20 -05:00
be2ee6274a update 2024-08-25 05:12:54 -05:00
1fbe3dbc95 update 2024-08-25 05:08:59 -05:00
f8a13c4bff update 2024-08-25 05:05:59 -05:00
c9d77c5eec update 2024-08-25 05:03:23 -05:00
3457eba0a2 update 2024-08-25 04:52:22 -05:00
738d19edfa update 2024-08-25 04:40:58 -05:00
23d397e5d4 update 2024-08-25 04:35:16 -05:00
10bfb6fd54 update 2024-08-25 04:34:31 -05:00
0ff6377bd6 update 2024-08-24 21:30:35 -05:00
8d92151ad3 update 2024-08-24 21:29:00 -05:00
3f74860c28 update 2024-08-24 21:28:14 -05:00
f12af0f92f update 2024-08-24 21:28:03 -05:00
86a5af321d update 2024-08-24 21:25:12 -05:00
4a1e4f980d update 2024-08-24 21:23:10 -05:00
bf6c021d8b update 2024-08-24 21:09:10 -05:00
0abc90d9cd update 2024-08-24 21:08:06 -05:00
e2cabee7dd update 2024-08-24 20:57:18 -05:00
1f2fd56d89 update 2024-08-24 20:56:13 -05:00
785a256258 update 2024-08-24 20:47:17 -05:00
26c3a919c6 update 2024-08-24 20:33:10 -05:00
280298cc0a update 2024-08-24 20:31:37 -05:00
f5b4c58367 update 2024-08-24 20:30:21 -05:00
0a3f3d99d7 update 2024-08-24 20:29:32 -05:00
21405024f7 add pfsense 2024-08-24 20:23:35 -05:00
61110282d5 update 2024-08-11 07:57:18 -05:00
5765f9b5d7 revert 2024-08-11 07:50:53 -05:00
f70c55dcf2 update 2024-08-11 07:48:13 -05:00
b2212a6608 move to nfs 2024-08-11 07:47:05 -05:00
5e5a7b3803 update 2024-08-11 07:40:16 -05:00
176 changed files with 5457 additions and 579 deletions

View 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

View File

@@ -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

View File

@@ -1,277 +0,0 @@
gatekeeper:
replicas: 3
revisionHistoryLimit: 10
auditInterval: 60
metricsBackends: ["prometheus"]
auditMatchKindOnly: false
constraintViolationsLimit: 20
auditFromCache: false
disableMutation: false
disableValidatingWebhook: false
validatingWebhookName: gatekeeper-validating-webhook-configuration
validatingWebhookTimeoutSeconds: 3
validatingWebhookFailurePolicy: Ignore
validatingWebhookAnnotations: {}
validatingWebhookExemptNamespacesLabels: {}
validatingWebhookObjectSelector: {}
validatingWebhookCheckIgnoreFailurePolicy: Fail
validatingWebhookCustomRules: {}
validatingWebhookURL: null
enableDeleteOperations: false
enableExternalData: true
enableGeneratorResourceExpansion: true
enableTLSHealthcheck: false
maxServingThreads: -1
mutatingWebhookName: gatekeeper-mutating-webhook-configuration
mutatingWebhookFailurePolicy: Ignore
mutatingWebhookReinvocationPolicy: Never
mutatingWebhookAnnotations: {}
mutatingWebhookExemptNamespacesLabels: {}
mutatingWebhookObjectSelector: {}
mutatingWebhookTimeoutSeconds: 1
mutatingWebhookCustomRules: {}
mutatingWebhookURL: null
mutationAnnotations: false
auditChunkSize: 500
logLevel: INFO
logDenies: false
logMutations: false
emitAdmissionEvents: false
emitAuditEvents: false
admissionEventsInvolvedNamespace: false
auditEventsInvolvedNamespace: false
resourceQuota: true
externaldataProviderResponseCacheTTL: 3m
image:
repository: openpolicyagent/gatekeeper
crdRepository: openpolicyagent/gatekeeper-crds
release: v3.15.0-beta.0
pullPolicy: Always
pullSecrets: []
preInstall:
crdRepository:
image:
repository: null
tag: v3.15.0-beta.0
postUpgrade:
labelNamespace:
enabled: false
image:
repository: openpolicyagent/gatekeeper-crds
tag: v3.15.0-beta.0
pullPolicy: IfNotPresent
pullSecrets: []
extraNamespaces: []
podSecurity: ["pod-security.kubernetes.io/audit=restricted",
"pod-security.kubernetes.io/audit-version=latest",
"pod-security.kubernetes.io/warn=restricted",
"pod-security.kubernetes.io/warn-version=latest",
"pod-security.kubernetes.io/enforce=restricted",
"pod-security.kubernetes.io/enforce-version=v1.24"]
extraAnnotations: {}
priorityClassName: ""
affinity: {}
tolerations: []
nodeSelector: {kubernetes.io/os: linux}
resources: {}
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 999
runAsNonRoot: true
runAsUser: 1000
postInstall:
labelNamespace:
enabled: true
extraRules: []
image:
repository: openpolicyagent/gatekeeper-crds
tag: v3.15.0-beta.0
pullPolicy: IfNotPresent
pullSecrets: []
extraNamespaces: []
podSecurity: ["pod-security.kubernetes.io/audit=restricted",
"pod-security.kubernetes.io/audit-version=latest",
"pod-security.kubernetes.io/warn=restricted",
"pod-security.kubernetes.io/warn-version=latest",
"pod-security.kubernetes.io/enforce=restricted",
"pod-security.kubernetes.io/enforce-version=v1.24"]
extraAnnotations: {}
priorityClassName: ""
probeWebhook:
enabled: true
image:
repository: curlimages/curl
tag: 7.83.1
pullPolicy: IfNotPresent
pullSecrets: []
waitTimeout: 60
httpTimeout: 2
insecureHTTPS: false
priorityClassName: ""
affinity: {}
tolerations: []
nodeSelector: {kubernetes.io/os: linux}
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 999
runAsNonRoot: true
runAsUser: 1000
preUninstall:
deleteWebhookConfigurations:
extraRules: []
enabled: false
image:
repository: openpolicyagent/gatekeeper-crds
tag: v3.15.0-beta.0
pullPolicy: IfNotPresent
pullSecrets: []
priorityClassName: ""
affinity: {}
tolerations: []
nodeSelector: {kubernetes.io/os: linux}
resources: {}
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 999
runAsNonRoot: true
runAsUser: 1000
podAnnotations: {}
auditPodAnnotations: {}
podLabels: {}
podCountLimit: "100"
secretAnnotations: {}
enableRuntimeDefaultSeccompProfile: true
controllerManager:
exemptNamespaces: []
exemptNamespacePrefixes: []
hostNetwork: false
dnsPolicy: ClusterFirst
port: 8443
metricsPort: 8888
healthPort: 9090
readinessTimeout: 1
livenessTimeout: 1
priorityClassName: system-cluster-critical
disableCertRotation: false
tlsMinVersion: 1.3
clientCertName: ""
strategyType: RollingUpdate
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: gatekeeper.sh/operation
operator: In
values:
- webhook
topologyKey: kubernetes.io/hostname
weight: 100
topologySpreadConstraints: []
tolerations: []
nodeSelector: {kubernetes.io/os: linux}
resources:
limits:
memory: 512Mi
requests:
cpu: 100m
memory: 512Mi
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 999
runAsNonRoot: true
runAsUser: 1000
podSecurityContext:
fsGroup: 999
supplementalGroups:
- 999
extraRules: []
networkPolicy:
enabled: false
ingress: { }
# - from:
# - ipBlock:
# cidr: 0.0.0.0/0
audit:
enablePubsub: false
connection: audit-connection
channel: audit-channel
hostNetwork: false
dnsPolicy: ClusterFirst
metricsPort: 8888
healthPort: 9090
readinessTimeout: 1
livenessTimeout: 1
priorityClassName: system-cluster-critical
disableCertRotation: false
affinity: {}
tolerations: []
nodeSelector: {kubernetes.io/os: linux}
resources:
limits:
memory: 512Mi
requests:
cpu: 100m
memory: 512Mi
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 999
runAsNonRoot: true
runAsUser: 1000
podSecurityContext:
fsGroup: 999
supplementalGroups:
- 999
writeToRAMDisk: false
extraRules: []
crds:
affinity: {}
tolerations: []
nodeSelector: {kubernetes.io/os: linux}
resources: {}
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 65532
runAsNonRoot: true
runAsUser: 65532
pdb:
controllerManager:
minAvailable: 1
service: {}
disabledBuiltins: ["{http.send}"]
psp:
enabled: true
upgradeCRDs:
enabled: true
extraRules: []
priorityClassName: ""
rbac:
create: true
externalCertInjection:
enabled: false
secretName: gatekeeper-webhook-server-cert

12
infra/argocd/Chart.yaml Normal file
View File

@@ -0,0 +1,12 @@
apiVersion: v2
name: argocd
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.16.0"
dependencies:
- name: argo-cd
repository: https://argoproj.github.io/argo-helm
version: 6.11.1

View File

@@ -0,0 +1,64 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: argocd
namespace: argocd
spec:
project: default
source:
repoURL: https://gitlab.com/developerdurp/homelab.git
targetRevision: main
path: infra/argocd
destination:
namespace: argocd
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
---
#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
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: argocd-ingress
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
spec:
entryPoints:
- websecure
routes:
- match: Host(`argocd.infra.durp.info`)
#middlewares:
# - name: whitelist
# namespace: traefik
kind: Rule
services:
- name: argocd-server
port: 443
scheme: https
#tls:
# secretName: argocd-tls

View File

@@ -7,8 +7,8 @@ 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: infra/longhorn
destination: destination:
namespace: longhorn-system namespace: longhorn-system
name: in-cluster name: in-cluster

View File

@@ -7,8 +7,8 @@ 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: infra/metallb-system
destination: destination:
namespace: metallb-system namespace: metallb-system
name: in-cluster name: in-cluster
@@ -19,4 +19,3 @@ spec:
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true

View File

@@ -7,8 +7,8 @@ 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: infra/traefik
destination: destination:
namespace: traefik namespace: traefik
name: in-cluster name: in-cluster
@@ -18,3 +18,4 @@ spec:
selfHeal: true selfHeal: true
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true

View File

@@ -1,16 +1,16 @@
apiVersion: argoproj.io/v1alpha1 apiVersion: argoproj.io/v1alpha1
kind: Application kind: Application
metadata: metadata:
name: argocd name: vault
namespace: argocd namespace: argocd
spec: 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: infra/vault
destination: destination:
namespace: argocd namespace: vault
name: in-cluster name: in-cluster
syncPolicy: syncPolicy:
automated: automated:
@@ -18,3 +18,4 @@ spec:
selfHeal: true selfHeal: true
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true

View File

@@ -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.7.2

View File

@@ -0,0 +1,15 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: longhorn-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`longhorn.infra.durp.info`) && PathPrefix(`/`)
kind: Rule
services:
- name: longhorn-frontend
port: 80
tls:
secretName: longhorn-tls

View File

@@ -0,0 +1,23 @@
#apiVersion: external-secrets.io/v1beta1
#kind: ExternalSecret
#metadata:
# name: external-longhorn-backup-token-secret
#spec:
# secretStoreRef:
# name: vault
# kind: ClusterSecretStore
# target:
# name: longhorn-backup-token-secret
# data:
# - secretKey: AWS_ACCESS_KEY_ID
# remoteRef:
# key: secrets/longhorn/backup
# property: AWS_ACCESS_KEY_ID
# - secretKey: AWS_ENDPOINTS
# remoteRef:
# key: secrets/longhorn/backup
# property: AWS_ENDPOINTS
# - secretKey: AWS_SECRET_ACCESS_KEY
# remoteRef:
# key: secrets/longhorn/backup
# property: AWS_SECRET_ACCESS_KEY

192
infra/longhorn/values.yaml Normal file
View File

@@ -0,0 +1,192 @@
longhorn:
global:
cattle:
systemDefaultRegistry: ""
image:
longhorn:
engine:
repository: longhornio/longhorn-engine
manager:
repository: longhornio/longhorn-manager
ui:
repository: longhornio/longhorn-ui
instanceManager:
repository: longhornio/longhorn-instance-manager
shareManager:
repository: longhornio/longhorn-share-manager
backingImageManager:
repository: longhornio/backing-image-manager
csi:
attacher:
repository: longhornio/csi-attacher
provisioner:
repository: longhornio/csi-provisioner
nodeDriverRegistrar:
repository: longhornio/csi-node-driver-registrar
resizer:
repository: longhornio/csi-resizer
snapshotter:
repository: longhornio/csi-snapshotter
pullPolicy: Always
service:
ui:
type: ClusterIP
nodePort: null
manager:
type: ClusterIP
nodePort: ""
loadBalancerIP: ""
loadBalancerSourceRanges: ""
persistence:
defaultClass: true
defaultFsType: ext4
defaultClassReplicaCount: 3
defaultDataLocality: disabled # best-effort otherwise
reclaimPolicy: Delete
migratable: false
recurringJobSelector:
enable: true
jobList: '[
{
"name":"backup",
"task":"backup",
"cron":"0 0 * * ?",
"retain":24
}
]'
backingImage:
enable: false
name: ~
dataSourceType: ~
dataSourceParameters: ~
expectedChecksum: ~
csi:
kubeletRootDir: ~
attacherReplicaCount: ~
provisionerReplicaCount: ~
resizerReplicaCount: ~
snapshotterReplicaCount: ~
defaultSettings:
backupTarget: S3://longhorn-infra@us-east-1/
backupTargetCredentialSecret: longhorn-backup-token-secret
allowRecurringJobWhileVolumeDetached: ~
createDefaultDiskLabeledNodes: ~
defaultDataPath: ~
defaultDataLocality: ~
replicaSoftAntiAffinity: ~
replicaAutoBalance: ~
storageOverProvisioningPercentage: ~
storageMinimalAvailablePercentage: ~
upgradeChecker: ~
defaultReplicaCount: ~
defaultLonghornStaticStorageClass: longhorn
backupstorePollInterval: ~
taintToleration: ~
systemManagedComponentsNodeSelector: ~
priorityClass: ~
autoSalvage: ~
autoDeletePodWhenVolumeDetachedUnexpectedly: ~
disableSchedulingOnCordonedNode: ~
replicaZoneSoftAntiAffinity: ~
nodeDownPodDeletionPolicy: ~
allowNodeDrainWithLastHealthyReplica: ~
mkfsExt4Parameters: ~
disableReplicaRebuild: ~
replicaReplenishmentWaitInterval: ~
concurrentReplicaRebuildPerNodeLimit: ~
disableRevisionCounter: ~
systemManagedPodsImagePullPolicy: ~
allowVolumeCreationWithDegradedAvailability: ~
autoCleanupSystemGeneratedSnapshot: ~
concurrentAutomaticEngineUpgradePerNodeLimit: ~
backingImageCleanupWaitInterval: ~
backingImageRecoveryWaitInterval: ~
guaranteedEngineManagerCPU: ~
guaranteedReplicaManagerCPU: ~
kubernetesClusterAutoscalerEnabled: ~
orphanAutoDeletion: ~
storageNetwork: ~
privateRegistry:
createSecret: ~
registryUrl: ~
registryUser: ~
registryPasswd: ~
registrySecret: ~
longhornManager:
priorityClass: ~
tolerations: []
## If you want to set tolerations for Longhorn Manager DaemonSet, delete the `[]` in the line above
## and uncomment this example block
# - key: "key"
# operator: "Equal"
# value: "value"
# effect: "NoSchedule"
nodeSelector: {}
## If you want to set node selector for Longhorn Manager DaemonSet, delete the `{}` in the line above
## and uncomment this example block
# label-key1: "label-value1"
# label-key2: "label-value2"
longhornDriver:
priorityClass: ~
tolerations: []
## If you want to set tolerations for Longhorn Driver Deployer Deployment, delete the `[]` in the line above
## and uncomment this example block
# - key: "key"
# operator: "Equal"
# value: "value"
# effect: "NoSchedule"
nodeSelector: {}
## If you want to set node selector for Longhorn Driver Deployer Deployment, delete the `{}` in the line above
## and uncomment this example block
# label-key1: "label-value1"
# label-key2: "label-value2"
longhornUI:
priorityClass: ~
tolerations: []
## If you want to set tolerations for Longhorn UI Deployment, delete the `[]` in the line above
## and uncomment this example block
# - key: "key"
# operator: "Equal"
# value: "value"
# effect: "NoSchedule"
nodeSelector: {}
## If you want to set node selector for Longhorn UI Deployment, delete the `{}` in the line above
## and uncomment this example block
# label-key1: "label-value1"
# label-key2: "label-value2"
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
#
ingress:
enabled: false
## Specify override namespace, specifically this is useful for using longhorn as sub-chart
## and its release namespace is not the `longhorn-system`
namespaceOverride: ""
# Annotations to add to the Longhorn Manager DaemonSet Pods. Optional.
annotations: {}
serviceAccount:
# Annotations to add to the service account
annotations: {}

View File

@@ -0,0 +1,12 @@
apiVersion: v2
name: metallb-system
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.16.0"
dependencies:
- name: metallb
repository: https://metallb.github.io/metallb
version: 0.14.9

View File

@@ -4,7 +4,7 @@ metadata:
name: cheap name: cheap
spec: spec:
addresses: addresses:
- 192.168.20.34-192.168.20.39 - 192.168.12.130-192.168.12.140
--- ---
apiVersion: metallb.io/v1beta1 apiVersion: metallb.io/v1beta1
kind: L2Advertisement kind: L2Advertisement

View File

View File

@@ -8,4 +8,4 @@ appVersion: 0.0.1
dependencies: dependencies:
- name: traefik - name: traefik
repository: https://traefik.github.io/charts repository: https://traefik.github.io/charts
version: 22.1.0 version: 34.0.0

47
infra/traefik/values.yaml Normal file
View File

@@ -0,0 +1,47 @@
traefik:
image:
registry: registry.durp.info
repository: traefik
pullPolicy: Always
deployment:
replicas: 3
revisionHistoryLimit: 1
ingressRoute:
dashboard:
enabled: true
additionalArguments:
- "--serversTransport.insecureSkipVerify=true"
- "--log.level=DEBUG"
- --experimental.plugins.jwt.moduleName=github.com/traefik-plugins/traefik-jwt-plugin
- --experimental.plugins.jwt.version=v0.7.0
autoscaling:
enabled: true
minReplicas: 3
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
behavior:
scaleDown:
stabilizationWindowSeconds: 300
policies:
- type: Pods
value: 1
periodSeconds: 60
# -- [Resources](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for `traefik` container.
resources:
requests:
cpu: "100m"
memory: "512Mi"
limits:
memory: "512Mi"

View File

@@ -8,5 +8,5 @@ appVersion: 0.0.1
dependencies: dependencies:
- name: vault - name: vault
repository: https://helm.releases.hashicorp.com repository: https://helm.releases.hashicorp.com
version: 0.27.0 version: 0.29.1

View File

@@ -0,0 +1,18 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: vault-ingress
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
spec:
entryPoints:
- websecure
routes:
- match: Host(`vault.infra.durp.info`)
kind: Rule
services:
- name: vault
port: 8200
scheme: http
tls:
secretName: vault-tls

135
infra/vault/values.yaml Normal file
View File

@@ -0,0 +1,135 @@
vault:
global:
enabled: true
tlsDisable: false
resources:
requests:
memory: 256Mi
cpu: 250m
limits:
memory: 256Mi
cpu: 250m
server:
image:
repository: "hashicorp/vault"
# These Resource Limits are in line with node requirements in the
# Vault Reference Architecture for a Small Cluster
#resources:
# requests:
# memory: 8Gi
# cpu: 2000m
# limits:
# memory: 16Gi
# cpu: 2000m
# For HA configuration and because we need to manually init the vault,
# we need to define custom readiness/liveness Probe settings
readinessProbe:
enabled: true
path: "/v1/sys/health?standbyok=true&sealedcode=204&uninitcode=204"
livenessProbe:
enabled: true
path: "/v1/sys/health?standbyok=true"
initialDelaySeconds: 60
# extraEnvironmentVars is a list of extra environment variables to set with the stateful set. These could be
# used to include variables required for auto-unseal.
extraEnvironmentVars:
VAULT_CACERT: /vault/userconfig/vault-server-tls/vault.ca
volumes:
- name: userconfig-vault-server-tls
secret:
defaultMode: 420
secretName: vault-server-tls
volumeMounts:
- mountPath: /vault/userconfig/vault-server-tls
name: userconfig-vault-server-tls
readOnly: true
# This configures the Vault Statefulset to create a PVC for audit logs.
# See https://www.vaultproject.io/docs/audit/index.html to know more
auditStorage:
enabled: true
standalone:
enabled: true
config: |
disable_mlock = true
ui = true
listener "tcp" {
address = "[::]:8200"
cluster_address = "[::]:8201"
tls_disable = "true"
}
seal "transit" {
address = "http://192.168.20.253:8201"
disable_renewal = "false"
key_name = "autounseal"
mount_path = "transit/"
tls_skip_verify = "true"
}
storage "raft" {
path = "/vault/data"
}
# Run Vault in "HA" mode.
ha:
enabled: false
replicas: 3
raft:
enabled: false
setNodeId: true
config: |
ui = true
cluster_name = "vault-integrated-storage"
listener "tcp" {
address = "[::]:8200"
cluster_address = "[::]:8201"
tls_cert_file = "/vault/userconfig/vault-server-tls/vault.crt"
tls_key_file = "/vault/userconfig/vault-server-tls/vault.key"
tls_disable = "true"
}
seal "transit" {
address = "http://192.168.20.253:8201"
disable_renewal = "false"
key_name = "autounseal"
mount_path = "transit/"
tls_skip_verify = "true"
}
storage "raft" {
path = "/vault/data"
retry_join {
leader_api_addr = "http://vault-0.vault-internal:8200"
leader_ca_cert_file = "/vault/userconfig/vault-server-tls/vault.ca"
leader_client_cert_file = "/vault/userconfig/vault-server-tls/vault.crt"
leader_client_key_file = "/vault/userconfig/vault-server-tls/vault.key"
}
retry_join {
leader_api_addr = "http://vault-1.vault-internal:8200"
leader_ca_cert_file = "/vault/userconfig/vault-server-tls/vault.ca"
leader_client_cert_file = "/vault/userconfig/vault-server-tls/vault.crt"
leader_client_key_file = "/vault/userconfig/vault-server-tls/vault.key"
}
retry_join {
leader_api_addr = "http://vault-2.vault-internal:8200"
leader_ca_cert_file = "/vault/userconfig/vault-server-tls/vault.ca"
leader_client_cert_file = "/vault/userconfig/vault-server-tls/vault.crt"
leader_client_key_file = "/vault/userconfig/vault-server-tls/vault.key"
}
}
# Vault UI
ui:
enabled: true
serviceType: "LoadBalancer"
serviceNodePort: null
externalPort: 8200

View File

@@ -1,9 +0,0 @@
kind: Service
apiVersion: v1
metadata:
name: gitea-external-dns
annotations:
external-dns.alpha.kubernetes.io/hostname: gitea.durp.info
spec:
type: ExternalName
externalName: durp.info

View File

@@ -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"

View File

@@ -1,9 +0,0 @@
kind: Service
apiVersion: v1
metadata:
name: jellyfin-external-dns
annotations:
external-dns.alpha.kubernetes.io/hostname: jellyfin.durp.info
spec:
type: ExternalName
externalName: durp.info

View File

@@ -1,9 +0,0 @@
kind: Service
apiVersion: v1
metadata:
name: kasm-external-dns
annotations:
external-dns.alpha.kubernetes.io/hostname: kasm.durp.info
spec:
type: ExternalName
externalName: durp.info

View File

@@ -1,9 +0,0 @@
kind: Service
apiVersion: v1
metadata:
name: plex-external-dns
annotations:
external-dns.alpha.kubernetes.io/hostname: plex.durp.info
spec:
type: ExternalName
externalName: durp.info

View File

@@ -9,6 +9,6 @@ appVersion: "1.16.0"
dependencies: dependencies:
- name: argo-cd - name: argo-cd
repository: https://argoproj.github.io/argo-helm repository: https://argoproj.github.io/argo-helm
version: 6.7.11 version: 6.11.1

View File

@@ -7,8 +7,8 @@ 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: master/internalproxy
directory: directory:
recurse: true recurse: true
destination: destination:

View File

@@ -0,0 +1,59 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: argocd
namespace: argocd
spec:
project: default
source:
repoURL: https://gitlab.com/developerdurp/homelab.git
targetRevision: main
path: master/argocd
destination:
namespace: argocd
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: argocd-ingress
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production
spec:
entryPoints:
- websecure
routes:
- match: Host(`argocd.internal.durp.info`)
middlewares:
- name: whitelist
namespace: traefik
kind: Rule
services:
- name: argocd-server
port: 443
scheme: https
tls:
secretName: argocd-tls
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: argocd-tls
spec:
secretName: argocd-tls
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
commonName: "argocd.internal.durp.info"
dnsNames:
- "argocd.internal.durp.info"

View 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: master/authentik
destination:
namespace: authentik
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View 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: master/bitwarden
directory:
recurse: true
destination:
server: https://kubernetes.default.svc
namespace: bitwarden
syncPolicy:
automated:
prune: true
selfHeal: false
syncOptions:
- CreateNamespace=true

View File

@@ -7,8 +7,8 @@ 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: master/cert-manager
destination: destination:
namespace: cert-manager namespace: cert-manager
name: in-cluster name: in-cluster

View 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: master/crossplane
destination:
namespace: crossplane
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View 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: master/durpapi
destination:
namespace: durpapi
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View 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: master/durpot
destination:
namespace: durpot
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View File

@@ -7,8 +7,8 @@ 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: master/external-dns
destination: destination:
namespace: external-dns namespace: external-dns
name: in-cluster name: in-cluster

View File

@@ -7,8 +7,8 @@ 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: master/external-secrets
destination: destination:
namespace: external-secrets namespace: external-secrets
name: in-cluster name: in-cluster

View File

@@ -7,8 +7,8 @@ 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: master/gatekeeper
destination: destination:
namespace: gatekeeper namespace: gatekeeper
name: in-cluster name: in-cluster

View File

@@ -7,8 +7,8 @@ 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: master/gitlab-runner
destination: destination:
namespace: gitlab-runner namespace: gitlab-runner
name: in-cluster name: in-cluster

View 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: master/heimdall
destination:
namespace: heimdall
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View 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: master/krakend
destination:
namespace: krakend
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View File

@@ -7,8 +7,8 @@ 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: master/kube-prometheus-stack
destination: destination:
namespace: kube-prometheus-stack namespace: kube-prometheus-stack
name: in-cluster name: in-cluster

View File

@@ -7,8 +7,8 @@ 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: master/kubeclarity
destination: destination:
namespace: kubeclarity namespace: kubeclarity
name: in-cluster name: in-cluster

View 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: master/littlelink
directory:
recurse: true
destination:
server: https://kubernetes.default.svc
namespace: littlelink
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View File

@@ -0,0 +1,21 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: longhorn-system
namespace: argocd
spec:
project: default
source:
repoURL: https://gitlab.com/developerdurp/homelab.git
targetRevision: main
path: master/longhorn
destination:
namespace: longhorn-system
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View File

@@ -0,0 +1,22 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: metallb-system
namespace: argocd
spec:
project: default
source:
repoURL: https://gitlab.com/developerdurp/homelab.git
targetRevision: main
path: master/metallb-system
destination:
namespace: metallb-system
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View 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: master/nfs-client
directory:
recurse: true
destination:
namespace: nfs-client
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View 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: master/open-webui
destination:
namespace: open-webui
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View 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

View File

@@ -0,0 +1,20 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: traefik
namespace: argocd
spec:
project: default
source:
repoURL: https://gitlab.com/developerdurp/homelab.git
targetRevision: main
path: master/traefik
destination:
namespace: traefik
name: in-cluster
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View File

@@ -7,8 +7,8 @@ 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: master/uptimekuma
directory: directory:
recurse: true recurse: true
destination: destination:

View File

@@ -7,19 +7,19 @@ 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: master/vault
destination: destination:
namespace: vault namespace: vault
name: in-cluster name: in-cluster
syncPolicy: syncPolicy:
automated: automated:
prune: true prune: true
selfHeal: true selfHeal: true
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
ignoreDifferences: ignoreDifferences:
- group: admissionregistration.k8s.io - group: admissionregistration.k8s.io
kind: MutatingWebhookConfiguration kind: MutatingWebhookConfiguration
jqPathExpressions: jqPathExpressions:
- .webhooks[]?.clientConfig.caBundle - .webhooks[]?.clientConfig.caBundle

62
master/argocd/values.yaml Normal file
View File

@@ -0,0 +1,62 @@
argo-cd:
global:
revisionHistoryLimit: 1
image:
repository: registry.internal.durp.info/argoproj/argocd
imagePullPolicy: Always
server:
#extraArgs:
# - --dex-server-plaintext
# - --dex-server=argocd-dex-server:5556
# oidc.config: |
# name: AzureAD
# issuer: https://login.microsoftonline.com/TENANT_ID/v2.0
# clientID: CLIENT_ID
# clientSecret: $oidc.azuread.clientSecret
# requestedIDTokenClaims:
# groups:
# essential: true
# requestedScopes:
# - openid
# - profile
# - email
dex:
enabled: true
image:
repository: registry.internal.durp.info/dexidp/dex
imagePullPolicy: Always
configs:
cm:
create: true
annotations: {}
url: https://argocd.internal.durp.info
oidc.tls.insecure.skip.verify: "true"
dex.config: |
connectors:
- config:
issuer: https://authentik.durp.info/application/o/argocd/
clientID: dbb8ffc06104fb6e7fac3e4ae7fafb1d90437625
clientSecret: $client-secret:clientSecret
insecureEnableGroups: true
scopes:
- openid
- profile
- email
- groups
name: authentik
type: oidc
id: authentik
rbac:
create: true
policy.csv: |
g, ArgoCD Admins, role:admin
scopes: "[groups]"
server:
route:
enabled: false

View 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.3

View 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

View 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

View 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

View 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

View File

@@ -0,0 +1,56 @@
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
master:
persistence:
enabled: false
image:
registry: registry.internal.durp.info
repository: bitnami/redis
pullPolicy: Always
architecture: standalone
auth:
enabled: false

View 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"

View 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
#

View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: bitwarden-pvc
spec:
storageClassName: longhorn
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi

View 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.32.7
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

View 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

View 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

View 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

View File

@@ -8,4 +8,4 @@ appVersion: 0.0.1
dependencies: dependencies:
- name: cert-manager - name: cert-manager
repository: https://charts.jetstack.io repository: https://charts.jetstack.io
version: 1.*.* version: v1.15.3

View 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.17.1

View 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

File diff suppressed because it is too large Load Diff

13
master/durpapi/Chart.yaml Normal file
View 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

View 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 }}

View 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

View 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

View 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

View 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 }}

View 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
master/durpot/Chart.yaml Normal file
View 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

View 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

View File

@@ -9,4 +9,4 @@ appVersion: 0.0.1
dependencies: dependencies:
- name: external-dns - name: external-dns
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
version: 6.20.3 version: 8.3.8

View File

@@ -4,10 +4,10 @@ external-dns:
image: image:
pullPolicy: Always pullPolicy: Always
txtPrefix: "dmz-"
sources: sources:
- service - service
provider: cloudflare provider: cloudflare
cloudflare: cloudflare:
secretName : "external-dns" secretName : "external-dns"

View File

@@ -8,5 +8,5 @@ appVersion: 0.0.1
dependencies: dependencies:
- name: external-secrets - name: external-secrets
repository: https://charts.external-secrets.io repository: https://charts.external-secrets.io
version: 0.8.1 version: 0.10.4

View File

@@ -8,4 +8,4 @@ appVersion: 0.0.1
dependencies: dependencies:
- name: gatekeeper - name: gatekeeper
repository: https://open-policy-agent.github.io/gatekeeper/charts repository: https://open-policy-agent.github.io/gatekeeper/charts
version: 3.14.0 version: 3.17.1

View File

@@ -0,0 +1,278 @@
#gatekeeper:
# replicas: 3
# revisionHistoryLimit: 10
# auditInterval: 60
# metricsBackends: ["prometheus"]
# auditMatchKindOnly: false
# constraintViolationsLimit: 20
# auditFromCache: false
# disableMutation: false
# disableValidatingWebhook: false
# validatingWebhookName: gatekeeper-validating-webhook-configuration
# validatingWebhookTimeoutSeconds: 3
# validatingWebhookFailurePolicy: Ignore
# validatingWebhookAnnotations: {}
# validatingWebhookExemptNamespacesLabels: {}
# validatingWebhookObjectSelector: {}
# validatingWebhookCheckIgnoreFailurePolicy: Fail
# validatingWebhookCustomRules: {}
# validatingWebhookURL: null
# enableDeleteOperations: false
# enableExternalData: true
# enableGeneratorResourceExpansion: true
# enableTLSHealthcheck: false
# maxServingThreads: -1
# mutatingWebhookName: gatekeeper-mutating-webhook-configuration
# mutatingWebhookFailurePolicy: Ignore
# mutatingWebhookReinvocationPolicy: Never
# mutatingWebhookAnnotations: {}
# mutatingWebhookExemptNamespacesLabels: {}
# mutatingWebhookObjectSelector: {}
# mutatingWebhookTimeoutSeconds: 1
# mutatingWebhookCustomRules: {}
# mutatingWebhookURL: null
# mutationAnnotations: false
# auditChunkSize: 500
# logLevel: INFO
# logDenies: false
# logMutations: false
# emitAdmissionEvents: false
# emitAuditEvents: false
# admissionEventsInvolvedNamespace: false
# auditEventsInvolvedNamespace: false
# resourceQuota: true
# externaldataProviderResponseCacheTTL: 3m
# image:
# repository: openpolicyagent/gatekeeper
# crdRepository: openpolicyagent/gatekeeper-crds
# release: v3.15.0-beta.0
# pullPolicy: Always
# pullSecrets: []
# preInstall:
# crdRepository:
# image:
# repository: null
# tag: v3.15.0-beta.0
# postUpgrade:
# labelNamespace:
# enabled: false
# image:
# repository: openpolicyagent/gatekeeper-crds
# tag: v3.15.0-beta.0
# pullPolicy: IfNotPresent
# pullSecrets: []
# extraNamespaces: []
# podSecurity: ["pod-security.kubernetes.io/audit=restricted",
# "pod-security.kubernetes.io/audit-version=latest",
# "pod-security.kubernetes.io/warn=restricted",
# "pod-security.kubernetes.io/warn-version=latest",
# "pod-security.kubernetes.io/enforce=restricted",
# "pod-security.kubernetes.io/enforce-version=v1.24"]
# extraAnnotations: {}
# priorityClassName: ""
# affinity: {}
# tolerations: []
# nodeSelector: {kubernetes.io/os: linux}
# resources: {}
# securityContext:
# allowPrivilegeEscalation: false
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsGroup: 999
# runAsNonRoot: true
# runAsUser: 1000
# postInstall:
# labelNamespace:
# enabled: true
# extraRules: []
# image:
# repository: openpolicyagent/gatekeeper-crds
# tag: v3.15.0-beta.0
# pullPolicy: IfNotPresent
# pullSecrets: []
# extraNamespaces: []
# podSecurity: ["pod-security.kubernetes.io/audit=restricted",
# "pod-security.kubernetes.io/audit-version=latest",
# "pod-security.kubernetes.io/warn=restricted",
# "pod-security.kubernetes.io/warn-version=latest",
# "pod-security.kubernetes.io/enforce=restricted",
# "pod-security.kubernetes.io/enforce-version=v1.24"]
# extraAnnotations: {}
# priorityClassName: ""
# probeWebhook:
# enabled: true
# image:
# repository: curlimages/curl
# tag: 7.83.1
# pullPolicy: IfNotPresent
# pullSecrets: []
# waitTimeout: 60
# httpTimeout: 2
# insecureHTTPS: false
# priorityClassName: ""
# affinity: {}
# tolerations: []
# nodeSelector: {kubernetes.io/os: linux}
# securityContext:
# allowPrivilegeEscalation: false
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsGroup: 999
# runAsNonRoot: true
# runAsUser: 1000
# preUninstall:
# deleteWebhookConfigurations:
# extraRules: []
# enabled: false
# image:
# repository: openpolicyagent/gatekeeper-crds
# tag: v3.15.0-beta.0
# pullPolicy: IfNotPresent
# pullSecrets: []
# priorityClassName: ""
# affinity: {}
# tolerations: []
# nodeSelector: {kubernetes.io/os: linux}
# resources: {}
# securityContext:
# allowPrivilegeEscalation: false
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsGroup: 999
# runAsNonRoot: true
# runAsUser: 1000
# podAnnotations: {}
# auditPodAnnotations: {}
# podLabels: {}
# podCountLimit: "100"
# secretAnnotations: {}
# enableRuntimeDefaultSeccompProfile: true
# controllerManager:
# exemptNamespaces: []
# exemptNamespacePrefixes: []
# hostNetwork: false
# dnsPolicy: ClusterFirst
# port: 8443
# metricsPort: 8888
# healthPort: 9090
# readinessTimeout: 1
# livenessTimeout: 1
# priorityClassName: system-cluster-critical
# disableCertRotation: false
# tlsMinVersion: 1.3
# clientCertName: ""
# strategyType: RollingUpdate
# affinity:
# podAntiAffinity:
# preferredDuringSchedulingIgnoredDuringExecution:
# - podAffinityTerm:
# labelSelector:
# matchExpressions:
# - key: gatekeeper.sh/operation
# operator: In
# values:
# - webhook
# topologyKey: kubernetes.io/hostname
# weight: 100
# topologySpreadConstraints: []
# tolerations: []
# nodeSelector: {kubernetes.io/os: linux}
# resources:
# limits:
# memory: 512Mi
# requests:
# cpu: 100m
# memory: 512Mi
# securityContext:
# allowPrivilegeEscalation: false
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsGroup: 999
# runAsNonRoot: true
# runAsUser: 1000
# podSecurityContext:
# fsGroup: 999
# supplementalGroups:
# - 999
# extraRules: []
# networkPolicy:
# enabled: false
# ingress: { }
# # - from:
# # - ipBlock:
# # cidr: 0.0.0.0/0
# audit:
# enablePubsub: false
# connection: audit-connection
# channel: audit-channel
# hostNetwork: false
# dnsPolicy: ClusterFirst
# metricsPort: 8888
# healthPort: 9090
# readinessTimeout: 1
# livenessTimeout: 1
# priorityClassName: system-cluster-critical
# disableCertRotation: false
# affinity: {}
# tolerations: []
# nodeSelector: {kubernetes.io/os: linux}
# resources:
# limits:
# memory: 512Mi
# requests:
# cpu: 100m
# memory: 512Mi
# securityContext:
# allowPrivilegeEscalation: false
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsGroup: 999
# runAsNonRoot: true
# runAsUser: 1000
# podSecurityContext:
# fsGroup: 999
# supplementalGroups:
# - 999
# writeToRAMDisk: false
# extraRules: []
# crds:
# affinity: {}
# tolerations: []
# nodeSelector: {kubernetes.io/os: linux}
# resources: {}
# securityContext:
# allowPrivilegeEscalation: false
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsGroup: 65532
# runAsNonRoot: true
# runAsUser: 65532
# pdb:
# controllerManager:
# minAvailable: 1
# service: {}
# disabledBuiltins: ["{http.send}"]
# psp:
# enabled: true
# upgradeCRDs:
# enabled: true
# extraRules: []
# priorityClassName: ""
# rbac:
# create: true
# externalCertInjection:
# enabled: false
# secretName: gatekeeper-webhook-server-cert
#

View File

@@ -8,4 +8,4 @@ appVersion: 0.0.1
dependencies: dependencies:
- name: gitlab-runner - name: gitlab-runner
repository: https://charts.gitlab.io/ repository: https://charts.gitlab.io/
version: 0.43.0 version: 0.69.0

View File

@@ -0,0 +1,4 @@
FROM ubuntu:latest
LABEL authors="user"
ENTRYPOINT ["top", "-b"]

View 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.4

View 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

View 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

View File

@@ -0,0 +1,46 @@
#apiVersion: traefik.io/v1alpha1
#kind: IngressRoute
#metadata:
# name: argocd-ingress
# annotations:
# cert-manager.io/cluster-issuer: letsencrypt-production
#spec:
# entryPoints:
# - websecure
# routes:
# - match: Host(`argocd.internal.durp.info`)
# middlewares:
# - name: whitelist
# namespace: traefik
# kind: Rule
# services:
# - name: argocd-server
# port: 443
# scheme: https
# tls:
# secretName: argocd-tls
#
#---
#
#kind: Service
#apiVersion: v1
#metadata:
# name: argocd-server
#spec:
# type: ExternalName
# externalName: argocd-server.argocd.svc.cluster.local
#
#---
#
#apiVersion: cert-manager.io/v1
#kind: Certificate
#metadata:
# name: argocd-tls
#spec:
# secretName: argocd-tls
# issuerRef:
# name: letsencrypt-production
# kind: ClusterIssuer
# commonName: "argocd.internal.durp.info"
# dnsNames:
# - "argocd.internal.durp.info"

Some files were not shown because too many files have changed in this diff Show More