feat: Added authelia
All checks were successful
kustomization/flux-system/12ab30af reconciliation succeeded
kustomization/cnpg/12ab30af reconciliation succeeded
kustomization/longhorn/12ab30af reconciliation succeeded
kustomization/authelia/12ab30af reconciliation succeeded

This commit is contained in:
2025-12-22 02:50:14 +01:00
parent c186ee59f5
commit 3b0f919fad
20 changed files with 275 additions and 0 deletions

View File

@@ -19,3 +19,8 @@ spec:
copy: copy:
- from: "@foundation/apps/lldap/**" - from: "@foundation/apps/lldap/**"
to: "@artifact/" to: "@artifact/"
- name: authelia
originRevision: "@foundation"
copy:
- from: "@foundation/apps/authelia/**"
to: "@artifact/"

View File

@@ -0,0 +1,17 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: authelia
namespace: flux-system
spec:
interval: 1h
retryInterval: 2m
timeout: 5m
dependsOn:
- name: cnpg
sourceRef:
kind: ExternalArtifact
name: authelia
path: ./${cluster_env}
prune: true
wait: true

View File

@@ -0,0 +1,16 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: db
spec:
bootstrap:
recovery:
source: source
externalClusters:
- name: source
plugin:
name: barman-cloud.cloudnative-pg.io
parameters:
barmanObjectName: garage-store
serverName: db
plugins: []

View File

@@ -0,0 +1,15 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: db
namespace: authelia
# TODO: Add labels?
spec:
storage:
size: 8Gi
storageClass: local-path
plugins:
- name: barman-cloud.cloudnative-pg.io
isWALArchiver: true
parameters:
barmanObjectName: garage-store

View File

@@ -0,0 +1,29 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: authelia
namespace: authelia
spec:
interval: 12h
install:
strategy:
name: RetryOnFailure
retryInterval: 2m
upgrade:
strategy:
name: RetryOnFailure
retryInterval: 3m
chart:
spec:
chart: authelia
version: "0.10.x"
sourceRef:
kind: HelmRepository
name: authelia
interval: 24h
valuesFrom:
- kind: ConfigMap
name: values-base
- kind: ConfigMap
name: values-overlay
optional: true

View File

@@ -0,0 +1,8 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: authelia
namespace: authelia
spec:
interval: 24h
url: https://charts.authelia.com

View File

@@ -0,0 +1,25 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- cluster.yaml
- service-user.yaml
- helm-repository.yaml
- helm-release.yaml
- secret-s3-garage.yaml
- object-store.yaml
configurations:
- name-reference.yaml
configMapGenerator:
- name: values-base
namespace: authelia
files:
- values.yaml
# Uncomment to restore database from backup
# patches:
# - path: cluster-restore.yaml
# target:
# kind: Cluster

View File

@@ -0,0 +1,6 @@
nameReference:
- kind: ConfigMap
version: v1
fieldSpecs:
- path: spec/valuesFrom/name
kind: HelmRelease

View File

@@ -0,0 +1,5 @@
apiVersion: v1
kind: Namespace
metadata:
name: authelia
namespace: authelia

View File

@@ -0,0 +1,20 @@
apiVersion: barmancloud.cnpg.io/v1
kind: ObjectStore
metadata:
name: garage-store
namespace: authelia
spec:
configuration:
destinationPath: s3://cnpg-backup/authelia
s3Credentials:
accessKeyId:
name: s3-garage
key: ACCESS_KEY_ID
secretAccessKey:
name: s3-garage
key: ACCESS_SECRET_KEY
region:
name: s3-garage
key: REGION
wal:
compression: gzip

View File

@@ -0,0 +1,9 @@
apiVersion: v1
kind: Secret
metadata:
name: s3-garage
namespace: authelia
annotations:
reflector.v1.k8s.emberstack.com/reflects: "cnpg-system/s3-garage"
type: Opaque
data: {}

View File

@@ -0,0 +1,6 @@
apiVersion: lldap.huizinga.dev/v1
kind: ServiceUser
metadata:
name: authelia
namespace: authelia
spec: {}

View File

@@ -0,0 +1,56 @@
pod:
kind: Deployment
replicas: 2
ingress:
enabled: false
secret:
additionalSecrets:
db-app:
key: db-app
authelia-lldap-credentials:
key: authelia-lldap-credentials
configMap:
authentication_backend:
ldap:
enabled: true
implementation: lldap
address: ldap://lldap.lldap.svc.cluster.local:3890
base_dn: dc=huizinga,dc=dev
additional_users_dn: ou=people
users_filter: "(&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person))"
additional_groups_dn: ou=groups
groups_filter: "(member={dn})"
attributes:
display_name: displayName
username: uid
group_name: cn
mail: mail
user: uid=authelia.authelia,ou=people,dc=huizinga,dc=dev
password:
secret_name: authelia-lldap-credentials
path: password
# session:
# redis:
# enabled: true
# host: dragonflydb.authelia
storage:
postgres:
enabled: true
address: tcp://db-rw.authelia:5432
database: app
username: app
password:
secret_name: db-app
path: password
notifier:
filesystem:
enabled: true
# access_control:
# secret:
# existingSecret: authelia-acl

View File

@@ -0,0 +1,6 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: db
spec:
instances: 2

View File

@@ -0,0 +1,8 @@
pod:
replicas: 2
configMap:
session:
cookies:
- subdomain: auth
domain: huizinga.dev

View File

@@ -0,0 +1,6 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: db
spec:
instances: 1

View File

@@ -0,0 +1,18 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../base
patches:
- path: cluster.yaml
target:
kind: Cluster
- path: object-store.yaml
target:
kind: ObjectStore
configMapGenerator:
- name: values-overlay
namespace: authelia
files:
- values.yaml

View File

@@ -0,0 +1,8 @@
apiVersion: barmancloud.cnpg.io/v1
kind: ObjectStore
metadata:
name: garage-store
namespace: lldap
spec:
configuration:
endpointURL: http://192.168.1.1:3900

View File

@@ -0,0 +1,11 @@
pod:
replicas: 1
configMap:
log:
level: debug
session:
cookies:
- subdomain: auth
domain: staging.huizinga.dev

View File

@@ -21,3 +21,4 @@ resources:
- ../../apps/artifacts.yaml - ../../apps/artifacts.yaml
- ../../apps/spegel/spegel.yaml - ../../apps/spegel/spegel.yaml
- ../../apps/lldap/lldap.yaml - ../../apps/lldap/lldap.yaml
- ../../apps/authelia/authelia.yaml