Compare commits
239 Commits
dmz
...
c3fd5e1894
| Author | SHA1 | Date | |
|---|---|---|---|
| c3fd5e1894 | |||
| 1de9ef55e2 | |||
| 4ee9c3da06 | |||
| 3e4a682e7b | |||
| a66cdf40e3 | |||
| 6cd37b4bd0 | |||
| c91fe325af | |||
| 848096364f | |||
| a891c0ab20 | |||
| 2f202e9993 | |||
| fad26e6e13 | |||
| 7a56cca0ee | |||
| b05b5345ed | |||
| b94d180811 | |||
| 80316602d5 | |||
| 4a0b91f737 | |||
| bd45075112 | |||
| 664bd5b324 | |||
| 7d6c60117a | |||
| fa66a33b41 | |||
| fa6ca7c7b1 | |||
| d550eba84d | |||
| 5d5fbd7fac | |||
| 9003f7f475 | |||
| 1641178875 | |||
| 03befcb0f8 | |||
| 1019a69c77 | |||
| aabd349d60 | |||
| 786c034ef6 | |||
| 435533502b | |||
| 4f74f8d575 | |||
| 5ad335cc1e | |||
| a6f6f38769 | |||
| 23edb4e2cc | |||
| 7f774c7dbd | |||
| f3d914e308 | |||
| 14da96a2a9 | |||
| f87e727b40 | |||
| 31437ce7bf | |||
| 6830296715 | |||
| 0ee046914a | |||
| 27cadcf8ce | |||
| 60c66fa3f3 | |||
| f7f3719a74 | |||
| 0642f11a1a | |||
| 5a0a17b33f | |||
| e4a429d720 | |||
| 2fda03d34e | |||
| 64396cd6e0 | |||
| 8eb26560e0 | |||
| 13e648043e | |||
| d48a2c406e | |||
| 32bb9882e2 | |||
| 080cd1b3c1 | |||
| d69480189b | |||
| 4483c0a657 | |||
| edbfe65ce1 | |||
| 7cae2987a4 | |||
| f885ed4329 | |||
| d8ea4a907f | |||
| ad18535ce7 | |||
| f978937455 | |||
| 142254c94a | |||
| 81ed14c3ee | |||
| 950d5f7950 | |||
| 23356d2d3e | |||
| 2de99e6812 | |||
| 058d4c943f | |||
| 7a3567144f | |||
| 9276abe7cc | |||
| c5077c097d | |||
| cdd9419cff | |||
| f1333aa0ee | |||
| f9096df658 | |||
| 09d140bb64 | |||
| 91001c230e | |||
| 4087eb7aaf | |||
| 37640bd420 | |||
| 7588fa3279 | |||
| 08ca20b874 | |||
| 547ef2ffbc | |||
| b4f701c084 | |||
| a47fe24d51 | |||
| 881de48183 | |||
| 61eb2cb68e | |||
| e17ffa9f3f | |||
| b50e31d42d | |||
| 622114aace | |||
| 2c8321d9b1 | |||
| 985a291936 | |||
| 1490ef6c5e | |||
| b45a04349e | |||
| 685dcde9c3 | |||
| d18d64f0eb | |||
| c3110978c7 | |||
| 03d69a40a0 | |||
| a398e63650 | |||
| 5acce59cd1 | |||
| 9899459652 | |||
| 1c4624104a | |||
| 709def73de | |||
| f0fd21ec86 | |||
| 7a6313f716 | |||
| 7dc22c2051 | |||
| b3c020d810 | |||
| ba19811491 | |||
| c956f88f43 | |||
| 8e65ceca52 | |||
| 535a47a8f2 | |||
| a9789b1221 | |||
| 87dd7d3da0 | |||
| 82ad8815f2 | |||
| 5089d01c06 | |||
| f8f5f27cb0 | |||
| 4c2e87944c | |||
| b6fa1079b6 | |||
| f5ceac3ec1 | |||
| 1966f141dc | |||
| f8d0229580 | |||
| e36610cd49 | |||
| 0c27dd360c | |||
|
|
e7c28dde45 | ||
|
|
41cc7889af | ||
|
|
f8899caf78 | ||
|
|
b47edf477b | ||
| 54a82177f2 | |||
| f3684f197c | |||
| 5f693d0020 | |||
| 14a659df5b | |||
| 46724e763c | |||
| 33c5d25271 | |||
| 99006a8900 | |||
| a42b3e785d | |||
| c39f20e371 | |||
| dc324a2d8b | |||
| 2d4d3773b7 | |||
| 54e12aa8c1 | |||
| 47d4e5015e | |||
| e60030016e | |||
| 6645dd77f6 | |||
| f1f8a9e837 | |||
| 47214c5a93 | |||
| a1b05d6f8a | |||
| 8ca00e2715 | |||
| 7cbe7932f1 | |||
| 97d73b36c4 | |||
| 679742ab45 | |||
| 9b1680cfc8 | |||
| dd3ca7c9a4 | |||
| 4a67df78b3 | |||
| dde4eac238 | |||
| f9987ac705 | |||
| 6705352a10 | |||
| 599e86e1a9 | |||
| 4826c5beb6 | |||
| 1284e2ec60 | |||
| 7f6e182084 | |||
| a565952e0c | |||
| f64bdfbedd | |||
| e6a8aa74b4 | |||
| b1c45f939b | |||
| 3bfec1450f | |||
| d5224c0c7f | |||
| 4e37bfb8dc | |||
| 45ae3523b9 | |||
| 1151680f65 | |||
| 1aefb8163b | |||
| e935822058 | |||
| 49b23b1788 | |||
| bd2def6d46 | |||
| 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 |
101
dmz/internalproxy/templates/ollama.yaml
Normal file
101
dmz/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
|
||||
@@ -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
12
infra/argocd/Chart.yaml
Normal 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
|
||||
79
infra/argocd/templates/argocd.yaml
Normal file
79
infra/argocd/templates/argocd.yaml
Normal file
@@ -0,0 +1,79 @@
|
||||
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
|
||||
|
||||
---
|
||||
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: argocd-tls
|
||||
spec:
|
||||
secretName: argocd-tls
|
||||
issuerRef:
|
||||
name: vault-issuer
|
||||
kind: ClusterIssuer
|
||||
commonName: "argocd.infra.durp.info"
|
||||
dnsNames:
|
||||
- "argocd.infra.durp.info"
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: cert-manager
|
||||
targetRevision: main
|
||||
path: infra/cert-manager
|
||||
destination:
|
||||
namespace: cert-manager
|
||||
name: in-cluster
|
||||
@@ -18,3 +18,4 @@ spec:
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: external-secrets
|
||||
targetRevision: main
|
||||
path: infra/external-secrets
|
||||
destination:
|
||||
namespace: external-secrets
|
||||
name: in-cluster
|
||||
@@ -18,3 +18,4 @@ spec:
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: longhorn
|
||||
targetRevision: main
|
||||
path: infra/longhorn
|
||||
destination:
|
||||
namespace: longhorn-system
|
||||
name: in-cluster
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: metallb-system
|
||||
targetRevision: main
|
||||
path: infra/metallb-system
|
||||
destination:
|
||||
namespace: metallb-system
|
||||
name: in-cluster
|
||||
@@ -19,4 +19,3 @@ spec:
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: traefik
|
||||
targetRevision: main
|
||||
path: infra/traefik
|
||||
destination:
|
||||
namespace: traefik
|
||||
name: in-cluster
|
||||
@@ -18,3 +18,4 @@ spec:
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: vault
|
||||
targetRevision: main
|
||||
path: infra/vault
|
||||
destination:
|
||||
namespace: vault
|
||||
name: in-cluster
|
||||
62
infra/argocd/values.yaml
Normal file
62
infra/argocd/values.yaml
Normal 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
|
||||
@@ -8,4 +8,4 @@ appVersion: 0.0.1
|
||||
dependencies:
|
||||
- name: cert-manager
|
||||
repository: https://charts.jetstack.io
|
||||
version: 1.*.*
|
||||
version: v1.16.3
|
||||
6
infra/cert-manager/templates/issuer.yaml
Normal file
6
infra/cert-manager/templates/issuer.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: issuer
|
||||
secrets:
|
||||
- name: issuer-token-lmzpj
|
||||
35
infra/cert-manager/templates/letsencrypt.yaml
Normal file
35
infra/cert-manager/templates/letsencrypt.yaml
Normal file
File diff suppressed because one or more lines are too long
@@ -1,20 +1,3 @@
|
||||
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:
|
||||
@@ -28,6 +11,13 @@ spec:
|
||||
data:
|
||||
- secretKey: cloudflare-api-token-secret
|
||||
remoteRef:
|
||||
key: secrets/cert-manager
|
||||
key: kv/cert-manager
|
||||
property: cloudflare-api-token-secret
|
||||
|
||||
---
|
||||
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: vault
|
||||
|
||||
26
infra/cert-manager/values.yaml
Normal file
26
infra/cert-manager/values.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
cert-manager:
|
||||
crds:
|
||||
enabled: true
|
||||
image:
|
||||
registry: registry.internal.durp.info
|
||||
repository: jetstack/cert-manager-controller
|
||||
pullPolicy: Always
|
||||
replicaCount: 3
|
||||
#extraArgs:
|
||||
# - --dns01-recursive-nameservers=1.1.1.1:53,1.0.0.1:53
|
||||
# - --dns01-recursive-nameservers-only
|
||||
#podDnsPolicy: None
|
||||
#podDnsConfig:
|
||||
# nameservers:
|
||||
# - "1.1.1.1"
|
||||
# - "1.0.0.1"
|
||||
webhook:
|
||||
image:
|
||||
registry: registry.internal.durp.info
|
||||
repository: jetstack/cert-manager-webhook
|
||||
pullPolicy: Always
|
||||
cainjector:
|
||||
image:
|
||||
registry: registry.internal.durp.info
|
||||
repository: jetstack/cert-manager-cainjector
|
||||
pullPolicy: Always
|
||||
11
infra/external-secrets/Chart.yaml
Normal file
11
infra/external-secrets/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v2
|
||||
name: external-secrets
|
||||
description: A Helm chart for Kubernetes
|
||||
type: application
|
||||
version: 0.0.1
|
||||
appVersion: 0.0.1
|
||||
|
||||
dependencies:
|
||||
- name: external-secrets
|
||||
repository: https://charts.external-secrets.io
|
||||
version: 0.13.0
|
||||
81
infra/external-secrets/templates/ca.yaml
Normal file
81
infra/external-secrets/templates/ca.yaml
Normal file
@@ -0,0 +1,81 @@
|
||||
apiVersion: v1
|
||||
data:
|
||||
vault.pem: |
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEszCCA5ugAwIBAgIUZEzzxqEuYiKHkL1df+Cb22NRRJMwDQYJKoZIhvcNAQEL
|
||||
BQAwFDESMBAGA1UEAxMJZHVycC5pbmZvMB4XDTI1MDEyMzIyMzQ0MloXDTM1MDEy
|
||||
MTExMTU1NVowIDEeMBwGA1UEAxMVdmF1bHQuaW5mcmEuZHVycC5pbmZvMIIBIjAN
|
||||
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkZM0ue4bMcmmATs+kGYSpR2hLUzq
|
||||
scGIwCtqmaKCMbd1xhmgjnIR3zvSRptLR2GVGvc1ti6qby0jXYvcqbxkHvay00zW
|
||||
2zYN+M2m4lXpuWzg1t6NEoO6XGAsGj2v0vcVktPPU9uj0rGUVGWWfsvjoXqQFg5I
|
||||
jdxsxK9SvMvw2XtE3FgKxpzCyw94InIHlcPwFTO+3ZdKStZlMbUDIkmszLBrWFcr
|
||||
XOsPDfLxqMy0Ck//LKIt8djh3254FHB1GG5+kI+JSW1o+tUcL2NymvIINwm/2acS
|
||||
1uTm+j9W7iEXav0pJNmm+/dzSskc3Y0ftM0h2HCXgitBIaEZnUVneNHOLwIDAQAB
|
||||
o4IB7zCCAeswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
|
||||
BBYEFCaQ2q7j7LyBGETEZ5qaJAdlISKCMB8GA1UdIwQYMBaAFO1jCyGkpFO+QiR2
|
||||
dfBMWVYeWrQ2MIH0BggrBgEFBQcBAQSB5zCB5DAzBggrBgEFBQcwAYYnaHR0cHM6
|
||||
Ly8xOTIuMTY4LjIwLjI1Mzo4MjAxL3YxL3BraS9vY3NwMD0GCCsGAQUFBzABhjFo
|
||||
dHRwczovL3Jvb3QtdmF1bHQuaW50ZXJuYWwuZHVycC5pbmZvL3YxL3BraS9vY3Nw
|
||||
MDEGCCsGAQUFBzAChiVodHRwczovLzE5Mi4xNjguMjAuMjUzOjgyMDEvdjEvcGtp
|
||||
L2NhMDsGCCsGAQUFBzAChi9odHRwczovL3Jvb3QtdmF1bHQuaW50ZXJuYWwuZHVy
|
||||
cC5pbmZvL3YxL3BraS9jYTAgBgNVHREEGTAXghV2YXVsdC5pbmZyYS5kdXJwLmlu
|
||||
Zm8wbwYDVR0fBGgwZjAsoCqgKIYmaHR0cHM6Ly8xOTIuMTY4LjIwLjI1Mzo4MjAx
|
||||
L3YxL3BraS9jcmwwNqA0oDKGMGh0dHBzOi8vcm9vdC12YXVsdC5pbnRlcm5hbC5k
|
||||
dXJwLmluZm8vdjEvcGtpL2NybDANBgkqhkiG9w0BAQsFAAOCAQEAuJ+lplY/+A5L
|
||||
5LzkljbKDTy3U6PLv1LtxqVCOFGiJXBnXMjtVW07bBEUadzFRNW8GHQ3w5QzOG6k
|
||||
/vE/TrrJho7l05J/uc+BUrPSNjefLmQV6hn4jrP86PR0vzRfbSqKKBIID9M7+zi6
|
||||
GFvHlVkSHsQyMQp7JOoax9KVzW2Y+OIgw7Lgw2tP122WCt2SIF0QenoZHsoW0guj
|
||||
tzTJRmJDjn6XeJ7L3FPkf37H6ub0Jg3zBGr6eorEFfYZNN5CXezjqMFBpRdq4UIo
|
||||
1M3A7o3uyZFcFsp/vGDcMBkwaCsBV9idu/HwkvGaTUNI285ilBORPD0bMZnACq/9
|
||||
+Q/cdsO5lg==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEmzCCA4OgAwIBAgIUQwCAs82sgSuiaVbjANHScO2DSfAwDQYJKoZIhvcNAQEL
|
||||
BQAwFDESMBAGA1UEAxMJZHVycC5pbmZvMB4XDTI1MDEyMzExMjEyNVoXDTM1MDEy
|
||||
MTExMTU1NVowFDESMBAGA1UEAxMJZHVycC5pbmZvMIIBIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAQ8AMIIBCgKCAQEAn9fjGRqqFsqguz56X6cXZwEMtD9wElwSFCb4Fc8YTzlH
|
||||
4fV13QwXKESLE/Q+7bw4y4FJQ8BiGNbxxbQOOgWhfGGlQyFa1lfhJtYLfqRN5C2/
|
||||
S7nr0YxDB9duc4OAExVL6Pr4/Koc+vDZY03l7RzwnF2AOM9DjFTASw01TphCQjRk
|
||||
U+upiN2TUhUPejV/gMR+zXM6pn98UBKG1dNubS0HzAMwAEXAPm141NDyWUCPT9+3
|
||||
6P03Ka8mUTx3X49OCtvJEGEQbtlnTFQaOSkP1yLW+XRMHw3sQaV2PWXu5fInbEpZ
|
||||
+SuzmgLOXtmQNmHLav9q1qeTVkpBGPWvfh2Vh1JJhQIDAQABo4IB4zCCAd8wDgYD
|
||||
VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJaP17f1Zw0V
|
||||
55Ks9Uf0USVWl0BPMB8GA1UdIwQYMBaAFO1jCyGkpFO+QiR2dfBMWVYeWrQ2MIH0
|
||||
BggrBgEFBQcBAQSB5zCB5DAzBggrBgEFBQcwAYYnaHR0cHM6Ly8xOTIuMTY4LjIw
|
||||
LjI1Mzo4MjAxL3YxL3BraS9vY3NwMD0GCCsGAQUFBzABhjFodHRwczovL3Jvb3Qt
|
||||
dmF1bHQuaW50ZXJuYWwuZHVycC5pbmZvL3YxL3BraS9vY3NwMDEGCCsGAQUFBzAC
|
||||
hiVodHRwczovLzE5Mi4xNjguMjAuMjUzOjgyMDEvdjEvcGtpL2NhMDsGCCsGAQUF
|
||||
BzAChi9odHRwczovL3Jvb3QtdmF1bHQuaW50ZXJuYWwuZHVycC5pbmZvL3YxL3Br
|
||||
aS9jYTAUBgNVHREEDTALgglkdXJwLmluZm8wbwYDVR0fBGgwZjAsoCqgKIYmaHR0
|
||||
cHM6Ly8xOTIuMTY4LjIwLjI1Mzo4MjAxL3YxL3BraS9jcmwwNqA0oDKGMGh0dHBz
|
||||
Oi8vcm9vdC12YXVsdC5pbnRlcm5hbC5kdXJwLmluZm8vdjEvcGtpL2NybDANBgkq
|
||||
hkiG9w0BAQsFAAOCAQEAiqAZ4zNIEkCWcvpDRq0VyJuk59sVtJr5X4FscHQ179nE
|
||||
QbbvMe+EBDFS6XQml1Elj8jiPa/D5O9Oc6Iisnm5+weZKwApz/lQ+XVkWLCoEplB
|
||||
ZZ9fcWVCbMLt0xlt8qn5z/mYKfbCT7ZCqDO+prQZt+ADJcQbiknfroAAqEbNKxwN
|
||||
Y9uUyOWNF3SxJEch4w2dtX+IEVmxeZnhMy8OuP0SQKl8aW40ugiG0ZD5yTBBfOD9
|
||||
zsrGSU/iSatn0b7bevBhaL96hz1/rNR1cL+4/albX2hrr8Rv3/SB2DLtNQlQW0ls
|
||||
AfhXAqP5zL+Ytgf1Of/pVdgnhxrYUY7RKCSGY5Hagw==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDLzCCAhegAwIBAgIUNHdvOzam2HPVdwXpMHUy4wl8ZRYwDQYJKoZIhvcNAQEL
|
||||
BQAwFDESMBAGA1UEAxMJZHVycC5pbmZvMB4XDTI1MDEyMzExMTUyNVoXDTM1MDEy
|
||||
MTExMTU1NVowFDESMBAGA1UEAxMJZHVycC5pbmZvMIIBIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAQ8AMIIBCgKCAQEA8XDTVEtRI3+k4yuvqVqfIiLRQJcXbmhfVtAeYk+5j9Ox
|
||||
p1w9YHdnPLqLFrD1PzadjqYeAp/fwlEFfs6lqwoTS8S9vhaFqcgB57nVMb77dTBb
|
||||
/08XHXOU6FPRjdFKm5QMpS7tn1XacPMy/o0bKqRREQeiuFDGVRyuF5PUgvWc1dvJ
|
||||
l27JvvgYktgjfpNS4DlCxg4lGXT5abvaKf2hnr65egaIo/yRWN9wnvAzRiY7oci7
|
||||
GA1oKz87Yc1tfL2gcynrwccOOCF/eUKesJR1I6GXNkN/a1fcr+Ld9Z9NhHBtO+vE
|
||||
N8DsZY+kG7DE3M4BCCTFUzllcYHjaW4HaF9vZW+PYwIDAQABo3kwdzAOBgNVHQ8B
|
||||
Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7WMLIaSkU75CJHZ1
|
||||
8ExZVh5atDYwHwYDVR0jBBgwFoAU7WMLIaSkU75CJHZ18ExZVh5atDYwFAYDVR0R
|
||||
BA0wC4IJZHVycC5pbmZvMA0GCSqGSIb3DQEBCwUAA4IBAQAS/qUI/1Yv07xUTK5k
|
||||
r93kC7GSPpmpkXIsfjChAl93sebN143fu70NUP74jjCc0Wkb8hRofGg10E+/24r1
|
||||
AI0KsLhzKzfIASxUVQAn8RTptLruaaPLboSA4MUZ8IB5y8Vy8E3/KtD0gD80j64Y
|
||||
rm9XGHA0HTJHbPUTb/Rux2g0E7WtiyWSWH8mqzbegU8IrkM3eVT4+ylBE7YkfWDD
|
||||
dw44sB71tfmDKpzWg6XQ6YMh0YfnyG1fYCj9LhuecNY9Uuo6cjDaAvkzMewWwqDx
|
||||
Q2Ekas98Di6itCP8vET+gBDjeCc+XR6Hx6vzWmxlZhwDuxEKL1a2/DabUxJyMNzv
|
||||
55Fn
|
||||
-----END CERTIFICATE-----
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: ca-pemstore
|
||||
70
infra/external-secrets/values.yaml
Normal file
70
infra/external-secrets/values.yaml
Normal file
@@ -0,0 +1,70 @@
|
||||
external-secrets:
|
||||
replicaCount: 3
|
||||
revisionHistoryLimit: 1
|
||||
leaderElect: true
|
||||
|
||||
installCRDs: true
|
||||
crds:
|
||||
createClusterExternalSecret: true
|
||||
createClusterSecretStore: true
|
||||
createClusterGenerator: true
|
||||
createPushSecret: true
|
||||
conversion:
|
||||
enabled: false
|
||||
|
||||
image:
|
||||
repository: registry.internal.durp.info/external-secrets/external-secrets
|
||||
pullPolicy: Always
|
||||
|
||||
extraVolumes:
|
||||
- name: ca-pemstore
|
||||
configMap:
|
||||
name: ca-pemstore
|
||||
|
||||
extraVolumeMounts:
|
||||
- name: ca-pemstore
|
||||
mountPath: /etc/ssl/certs/vault.pem
|
||||
subPath: vault.pem
|
||||
readOnly: true
|
||||
|
||||
resources:
|
||||
requests:
|
||||
memory: 32Mi
|
||||
cpu: 10m
|
||||
limits:
|
||||
memory: 32Mi
|
||||
cpu: 10m
|
||||
|
||||
webhook:
|
||||
log:
|
||||
level: debug
|
||||
image:
|
||||
repository: registry.internal.durp.info/external-secrets/external-secrets
|
||||
pullPolicy: Always
|
||||
|
||||
resources:
|
||||
requests:
|
||||
memory: 32Mi
|
||||
cpu: 10m
|
||||
limits:
|
||||
memory: 32Mi
|
||||
cpu: 10m
|
||||
|
||||
certController:
|
||||
create: false
|
||||
revisionHistoryLimit: 1
|
||||
log:
|
||||
level: debug
|
||||
|
||||
image:
|
||||
repository: registry.internal.durp.info/external-secrets/external-secrets
|
||||
pullPolicy: Always
|
||||
tag: ""
|
||||
|
||||
resources:
|
||||
requests:
|
||||
memory: 32Mi
|
||||
cpu: 10m
|
||||
limits:
|
||||
memory: 32Mi
|
||||
cpu: 10m
|
||||
@@ -9,4 +9,4 @@ appVersion: "1.16.0"
|
||||
dependencies:
|
||||
- name: longhorn
|
||||
repository: https://charts.longhorn.io
|
||||
version: 1.3.2
|
||||
version: 1.7.2
|
||||
32
infra/longhorn/templates/ingress.yaml
Normal file
32
infra/longhorn/templates/ingress.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: longhorn-ingress
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt-production
|
||||
spec:
|
||||
entryPoints:
|
||||
- websecure
|
||||
routes:
|
||||
- match: Host(`longhorn.infra.durp.info`) && PathPrefix(`/`)
|
||||
kind: Rule
|
||||
services:
|
||||
- name: longhorn-frontend
|
||||
port: 80
|
||||
tls:
|
||||
secretName: longhorn-tls
|
||||
|
||||
---
|
||||
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: longhorn-tls
|
||||
spec:
|
||||
secretName: longhorn-tls
|
||||
issuerRef:
|
||||
name: vault-issuer
|
||||
kind: ClusterIssuer
|
||||
commonName: "longhorn.infra.durp.info"
|
||||
dnsNames:
|
||||
- "longhorn.infra.durp.info"
|
||||
30
infra/longhorn/templates/secrets.yaml
Normal file
30
infra/longhorn/templates/secrets.yaml
Normal file
@@ -0,0 +1,30 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: vault
|
||||
|
||||
---
|
||||
|
||||
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: kv/longhorn/backup
|
||||
property: AWS_ACCESS_KEY_ID
|
||||
- secretKey: AWS_ENDPOINTS
|
||||
remoteRef:
|
||||
key: kv/longhorn/backup
|
||||
property: AWS_ENDPOINTS
|
||||
- secretKey: AWS_SECRET_ACCESS_KEY
|
||||
remoteRef:
|
||||
key: kv/longhorn/backup
|
||||
property: AWS_SECRET_ACCESS_KEY
|
||||
192
infra/longhorn/values.yaml
Normal file
192
infra/longhorn/values.yaml
Normal 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: {}
|
||||
|
||||
12
infra/metallb-system/Chart.yaml
Normal file
12
infra/metallb-system/Chart.yaml
Normal 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
|
||||
@@ -4,7 +4,7 @@ metadata:
|
||||
name: cheap
|
||||
spec:
|
||||
addresses:
|
||||
- 192.168.20.34-192.168.20.39
|
||||
- 192.168.12.130-192.168.12.140
|
||||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: L2Advertisement
|
||||
0
infra/metallb-system/values.yaml
Normal file
0
infra/metallb-system/values.yaml
Normal file
@@ -8,4 +8,4 @@ appVersion: 0.0.1
|
||||
dependencies:
|
||||
- name: traefik
|
||||
repository: https://traefik.github.io/charts
|
||||
version: 22.1.0
|
||||
version: 34.0.0
|
||||
47
infra/traefik/values.yaml
Normal file
47
infra/traefik/values.yaml
Normal 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"
|
||||
@@ -8,5 +8,5 @@ appVersion: 0.0.1
|
||||
dependencies:
|
||||
- name: vault
|
||||
repository: https://helm.releases.hashicorp.com
|
||||
version: 0.27.0
|
||||
version: 0.29.1
|
||||
|
||||
33
infra/vault/templates/ingress.yaml
Normal file
33
infra/vault/templates/ingress.yaml
Normal file
@@ -0,0 +1,33 @@
|
||||
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: https
|
||||
tls:
|
||||
secretName: vault-tls
|
||||
|
||||
---
|
||||
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: vault-tls
|
||||
spec:
|
||||
secretName: vault-tls
|
||||
issuerRef:
|
||||
name: vault-issuer
|
||||
kind: ClusterIssuer
|
||||
commonName: "vault.infra.durp.info"
|
||||
dnsNames:
|
||||
- "vault.infra.durp.info"
|
||||
4
infra/vault/templates/sa.yaml
Normal file
4
infra/vault/templates/sa.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: issuer
|
||||
17
infra/vault/templates/secret-store.yaml
Normal file
17
infra/vault/templates/secret-store.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
apiVersion: external-secrets.io/v1beta1
|
||||
kind: ClusterSecretStore
|
||||
metadata:
|
||||
name: vault
|
||||
spec:
|
||||
provider:
|
||||
vault:
|
||||
server: "https://vault.infra.durp.info"
|
||||
path: "kv"
|
||||
version: "v2"
|
||||
auth:
|
||||
kubernetes:
|
||||
mountPath: "kubernetes"
|
||||
role: "external-secrets"
|
||||
serviceAccountRef:
|
||||
name: "vault"
|
||||
|
||||
140
infra/vault/values.yaml
Normal file
140
infra/vault/values.yaml
Normal file
@@ -0,0 +1,140 @@
|
||||
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
|
||||
|
||||
extraSecretEnvironmentVars:
|
||||
- envName: VAULT_TOKEN
|
||||
secretName: autounseal
|
||||
secretKey: VAULT_TOKEN
|
||||
|
||||
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: false
|
||||
|
||||
config: |
|
||||
disable_mlock = true
|
||||
ui = true
|
||||
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"
|
||||
}
|
||||
|
||||
seal "transit" {
|
||||
address = "https://root-vault.internal.durp.info"
|
||||
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: true
|
||||
replicas: 3
|
||||
raft:
|
||||
enabled: true
|
||||
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"
|
||||
}
|
||||
|
||||
seal "transit" {
|
||||
address = "https://root-vault.internal.durp.info"
|
||||
disable_renewal = "false"
|
||||
key_name = "autounseal"
|
||||
mount_path = "transit/"
|
||||
tls_skip_verify = "true"
|
||||
}
|
||||
|
||||
storage "raft" {
|
||||
path = "/vault/data"
|
||||
retry_join {
|
||||
leader_api_addr = "https://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 = "https://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 = "https://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: false
|
||||
serviceType: "LoadBalancer"
|
||||
serviceNodePort: null
|
||||
externalPort: 8200
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -9,6 +9,6 @@ appVersion: "1.16.0"
|
||||
dependencies:
|
||||
- name: argo-cd
|
||||
repository: https://argoproj.github.io/argo-helm
|
||||
version: 6.7.11
|
||||
version: 6.11.1
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: internalproxy
|
||||
targetRevision: main
|
||||
path: master/internalproxy
|
||||
directory:
|
||||
recurse: true
|
||||
destination:
|
||||
59
master/argocd/templates/argocd.yaml
Normal file
59
master/argocd/templates/argocd.yaml
Normal 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"
|
||||
21
master/argocd/templates/authentik.yaml
Normal file
21
master/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: master/authentik
|
||||
destination:
|
||||
namespace: authentik
|
||||
name: in-cluster
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
|
||||
23
master/argocd/templates/bitwarden.yaml
Normal file
23
master/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: master/bitwarden
|
||||
directory:
|
||||
recurse: true
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: bitwarden
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: false
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
|
||||
20
master/argocd/templates/cert-manager.yaml
Normal file
20
master/argocd/templates/cert-manager.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: cert-manager
|
||||
namespace: argocd
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: main
|
||||
path: master/cert-manager
|
||||
destination:
|
||||
namespace: cert-manager
|
||||
name: in-cluster
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
20
master/argocd/templates/crossplane.yml
Normal file
20
master/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: master/crossplane
|
||||
destination:
|
||||
namespace: crossplane
|
||||
name: in-cluster
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
20
master/argocd/templates/durpapi.yaml
Normal file
20
master/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: master/durpapi
|
||||
destination:
|
||||
namespace: durpapi
|
||||
name: in-cluster
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
@@ -1,16 +1,16 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: argocd
|
||||
name: durpot
|
||||
namespace: argocd
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: argocd
|
||||
targetRevision: main
|
||||
path: master/durpot
|
||||
destination:
|
||||
namespace: argocd
|
||||
namespace: durpot
|
||||
name: in-cluster
|
||||
syncPolicy:
|
||||
automated:
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: external-dns
|
||||
targetRevision: main
|
||||
path: master/external-dns
|
||||
destination:
|
||||
namespace: external-dns
|
||||
name: in-cluster
|
||||
20
master/argocd/templates/external-secrets.yaml
Normal file
20
master/argocd/templates/external-secrets.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: external-secrets
|
||||
namespace: argocd
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: main
|
||||
path: master/external-secrets
|
||||
destination:
|
||||
namespace: external-secrets
|
||||
name: in-cluster
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: gatekeeper
|
||||
targetRevision: main
|
||||
path: master/gatekeeper
|
||||
destination:
|
||||
namespace: gatekeeper
|
||||
name: in-cluster
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: gitlab-runner
|
||||
targetRevision: main
|
||||
path: master/gitlab-runner
|
||||
destination:
|
||||
namespace: gitlab-runner
|
||||
name: in-cluster
|
||||
20
master/argocd/templates/heimdall.yaml
Normal file
20
master/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: master/heimdall
|
||||
destination:
|
||||
namespace: heimdall
|
||||
name: in-cluster
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
20
master/argocd/templates/krakend.yaml
Normal file
20
master/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: master/krakend
|
||||
destination:
|
||||
namespace: krakend
|
||||
name: in-cluster
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: kube-prometheus-stack
|
||||
targetRevision: main
|
||||
path: master/kube-prometheus-stack
|
||||
destination:
|
||||
namespace: kube-prometheus-stack
|
||||
name: in-cluster
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: kubeclarity
|
||||
targetRevision: main
|
||||
path: master/kubeclarity
|
||||
destination:
|
||||
namespace: kubeclarity
|
||||
name: in-cluster
|
||||
22
master/argocd/templates/littlelink.yaml
Normal file
22
master/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: master/littlelink
|
||||
directory:
|
||||
recurse: true
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: littlelink
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
21
master/argocd/templates/longhorn.yaml
Normal file
21
master/argocd/templates/longhorn.yaml
Normal 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
|
||||
|
||||
22
master/argocd/templates/metallb-system.yaml
Normal file
22
master/argocd/templates/metallb-system.yaml
Normal 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
|
||||
|
||||
|
||||
23
master/argocd/templates/nfs-client.yaml
Normal file
23
master/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: master/nfs-client
|
||||
directory:
|
||||
recurse: true
|
||||
destination:
|
||||
namespace: nfs-client
|
||||
name: in-cluster
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
|
||||
20
master/argocd/templates/open-webui.yaml
Normal file
20
master/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: master/open-webui
|
||||
destination:
|
||||
namespace: open-webui
|
||||
name: in-cluster
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
17
master/argocd/templates/secrets.yaml
Normal file
17
master/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
|
||||
20
master/argocd/templates/traefik.yaml
Normal file
20
master/argocd/templates/traefik.yaml
Normal 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
|
||||
@@ -7,8 +7,8 @@ spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: dmz
|
||||
path: uptimekuma
|
||||
targetRevision: main
|
||||
path: master/uptimekuma
|
||||
directory:
|
||||
recurse: true
|
||||
destination:
|
||||
25
master/argocd/templates/vault.yaml
Normal file
25
master/argocd/templates/vault.yaml
Normal file
@@ -0,0 +1,25 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: vault
|
||||
namespace: argocd
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://gitlab.com/developerdurp/homelab.git
|
||||
targetRevision: main
|
||||
path: master/vault
|
||||
destination:
|
||||
namespace: vault
|
||||
name: in-cluster
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
ignoreDifferences:
|
||||
- group: admissionregistration.k8s.io
|
||||
kind: MutatingWebhookConfiguration
|
||||
jqPathExpressions:
|
||||
- .webhooks[]?.clientConfig.caBundle
|
||||
12
master/authentik/Chart.yaml
Normal file
12
master/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.3
|
||||
24
master/authentik/templates/authentik-pv.yaml
Normal file
24
master/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
master/authentik/templates/authentik-pvc.yaml
Normal file
18
master/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
master/authentik/templates/ingress.yaml
Normal file
42
master/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
master/authentik/templates/secrets.yaml
Normal file
28
master/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
|
||||
|
||||
56
master/authentik/values.yaml
Normal file
56
master/authentik/values.yaml
Normal 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
|
||||
7
master/bitwarden/Chart.yaml
Normal file
7
master/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
master/bitwarden/templates/bitwarden-pv.yaml
Normal file
25
master/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
master/bitwarden/templates/bitwarden-pvc.yaml
Normal file
11
master/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
master/bitwarden/templates/deployment.yaml
Normal file
50
master/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.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
|
||||
42
master/bitwarden/templates/ingress.yaml
Normal file
42
master/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
master/bitwarden/templates/secrets.yaml
Normal file
16
master/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
master/bitwarden/templates/service.yaml
Normal file
12
master/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
|
||||
11
master/cert-manager/Chart.yaml
Normal file
11
master/cert-manager/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v2
|
||||
name: cert-manager
|
||||
description: A Helm chart for Kubernetes
|
||||
type: application
|
||||
version: 0.0.1
|
||||
appVersion: 0.0.1
|
||||
|
||||
dependencies:
|
||||
- name: cert-manager
|
||||
repository: https://charts.jetstack.io
|
||||
version: v1.15.3
|
||||
12
master/crossplane/Chart.yaml
Normal file
12
master/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.17.1
|
||||
55
master/crossplane/templates/gitlab.yml
Normal file
55
master/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
master/dashboards/nginx-dashboard.yaml
Normal file
1506
master/dashboards/nginx-dashboard.yaml
Normal file
File diff suppressed because it is too large
Load Diff
13
master/durpapi/Chart.yaml
Normal file
13
master/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
master/durpapi/templates/deployment.yaml
Normal file
38
master/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
master/durpapi/templates/hpa.yaml
Normal file
24
master/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
master/durpapi/templates/ingress.yaml
Normal file
44
master/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
master/durpapi/templates/secrets.yaml
Normal file
39
master/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
master/durpapi/templates/service.yaml
Normal file
12
master/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
master/durpapi/values.yaml
Normal file
39
master/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
master/durpot/Chart.yaml
Normal file
11
master/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
master/durpot/templates/secrets.yaml
Normal file
43
master/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
|
||||
@@ -9,4 +9,4 @@ appVersion: 0.0.1
|
||||
dependencies:
|
||||
- name: external-dns
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
version: 6.20.3
|
||||
version: 8.3.8
|
||||
@@ -4,10 +4,10 @@ external-dns:
|
||||
|
||||
image:
|
||||
pullPolicy: Always
|
||||
txtPrefix: "dmz-"
|
||||
|
||||
sources:
|
||||
- service
|
||||
|
||||
|
||||
provider: cloudflare
|
||||
cloudflare:
|
||||
secretName : "external-dns"
|
||||
@@ -8,5 +8,5 @@ appVersion: 0.0.1
|
||||
dependencies:
|
||||
- name: external-secrets
|
||||
repository: https://charts.external-secrets.io
|
||||
version: 0.8.1
|
||||
version: 0.10.4
|
||||
|
||||
@@ -8,4 +8,4 @@ appVersion: 0.0.1
|
||||
dependencies:
|
||||
- name: gatekeeper
|
||||
repository: https://open-policy-agent.github.io/gatekeeper/charts
|
||||
version: 3.14.0
|
||||
version: 3.17.1
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user