diff --git a/apps/authentik/authentik-secret.yaml b/apps/authentik/authentik-secret.yaml new file mode 100644 index 0000000..e35fef9 --- /dev/null +++ b/apps/authentik/authentik-secret.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Secret +metadata: + name: authentik-credentials + namespace: authentik +stringData: + secret_key: ENC[AES256_GCM,data:yIyQapbFtFM11LynFtkV3ffExhaDfN9QHeFbI1T0xkIhgsV+9sjg3qwMVmeBlAe7xZl8gsAM4kDj2Q6O91OdDg==,iv:+Cl8vOcxG9/mgRheaCO0bLWyCJXN+f1F2DD3oeHbPFY=,tag:711ytyKf6/tmXomBLoffGA==,type:str] + pg-password: ENC[AES256_GCM,data:3w8R9mRjMXMJDLjrC8QYaXFHsCU3yYZs2PcaFQNp3Z4=,iv:G/aXgoGz3vBOzZ5K3Y+DDJsqer4F5gvcMmtkzRx93CU=,tag:dXPs1pY/APvnMlxdvB1EkA==,type:str] + smtp-password: ENC[AES256_GCM,data:JpMgaQFPkBzOg5WjvpmhM0kPwvZkH+4tQjT17RJHjG14WjmWtfG9Bg==,iv:zjQRLIlrxKv5hbd4JZowNUEiibiCUMf79acZY0+dYAc=,tag:ORPafTPyOQJvVvHWQGmqhA==,type:str] +sops: + age: + - recipient: age14l0hwfqylwpemz5y2ghh2yxk0phszlnj3qlejhue0fw0kz3tmfgqdsjzdh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRekJuZythYzliTFJ3RlhS + R2p6TG9NeFdabFlPRWtpNHJMYVVxTWZEcmlRClk0WUorSzdxNlcyWHYwWFBTMnlq + TlM4dENSSit2S3VGSzJCeTRTYU52dmcKLS0tIEF0WkV0M25OSEo1N0FEYXI5Q0Z6 + QXVrY1NTeHZkeTlPRWNlVThzWno3T0kKC0KBoLT64GNqb8Ri9u69G7nqb1KftwwP + /24aVHrPxKi9d4ij9n3bvCYDF4rhtfexhrE4n7CfuKn2DcSiuTniuw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2026-04-29T21:43:59Z" + mac: ENC[AES256_GCM,data:Y+dJppkaVZ5NOhlvwbbsF5+vDFqGUI1Ps8IcE4J7FIW4HIdMVf6RKM0EInvPUW1LaBlmelCitcE30w0As7ysNRhLY8yUDaKUvuU6mRejlNUIF8wAHzhciL2jTvAQsArHjybJatEig28+wM9VcY8JEa/d/CmuiB9Nq4WbIV+JXlA=,iv:UQj2rIVLNPjtYp3d/jRyNfJyyyUsZ3+NDCgpI4aztzc=,tag:cwiCzG/A+rfRFfLjXVt82w==,type:str] + encrypted_regex: ^(data|stringData)$ + version: 3.12.2 diff --git a/apps/authentik/authentik.yaml b/apps/authentik/authentik.yaml new file mode 100644 index 0000000..9f2a6f9 --- /dev/null +++ b/apps/authentik/authentik.yaml @@ -0,0 +1,87 @@ +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: authentik + namespace: authentik +spec: + interval: 1h + chart: + spec: + chart: authentik + version: "2026.2.2" + sourceRef: + kind: HelmRepository + name: goauthentik + namespace: flux-system + install: + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + valuesFrom: + - kind: Secret + name: authentik-credentials + valuesKey: secret_key + targetPath: authentik.secret_key + - kind: Secret + name: authentik-credentials + valuesKey: pg-password + targetPath: authentik.postgresql.password + - kind: Secret + name: authentik-credentials + valuesKey: pg-password + targetPath: postgresql.auth.password + - kind: Secret + name: authentik-credentials + valuesKey: smtp-password + targetPath: authentik.email.password + values: + global: + security: + allowInsecureImages: true + + authentik: + log_level: info + error_reporting: + enabled: false + email: + host: smtp.ionos.de + port: 587 + username: gamemaster@axion1337.chat + use_tls: true + from: "Authentik " + + server: + ingress: + enabled: false + resources: + requests: + cpu: 100m + memory: 512Mi + limits: + memory: 1Gi + + worker: + resources: + requests: + cpu: 50m + memory: 512Mi + limits: + memory: 1Gi + + postgresql: + enabled: true + auth: + username: authentik + database: authentik + primary: + persistence: + enabled: true + size: 8Gi + resources: + requests: + cpu: 50m + memory: 256Mi + limits: + memory: 512Mi diff --git a/apps/authentik/certificate.yaml b/apps/authentik/certificate.yaml new file mode 100644 index 0000000..3f0ee72 --- /dev/null +++ b/apps/authentik/certificate.yaml @@ -0,0 +1,12 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: auth-axion1337-chat-cert + namespace: authentik +spec: + secretName: auth-axion1337-chat-tls + issuerRef: + name: letsencrypt-prod + kind: ClusterIssuer + dnsNames: + - auth.axion1337.chat diff --git a/apps/authentik/helm-repo.yaml b/apps/authentik/helm-repo.yaml new file mode 100644 index 0000000..6d45a69 --- /dev/null +++ b/apps/authentik/helm-repo.yaml @@ -0,0 +1,8 @@ +apiVersion: source.toolkit.fluxcd.io/v1 +kind: HelmRepository +metadata: + name: goauthentik + namespace: flux-system +spec: + interval: 1h + url: https://charts.goauthentik.io diff --git a/apps/authentik/ingress.yaml b/apps/authentik/ingress.yaml new file mode 100644 index 0000000..08096a6 --- /dev/null +++ b/apps/authentik/ingress.yaml @@ -0,0 +1,16 @@ +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: authentik + namespace: authentik +spec: + entryPoints: + - websecure + tls: + secretName: auth-axion1337-chat-tls + routes: + - match: Host(`auth.axion1337.chat`) + kind: Rule + services: + - name: authentik-server + port: 80 diff --git a/apps/authentik/kustomization.yaml b/apps/authentik/kustomization.yaml new file mode 100644 index 0000000..a4dd447 --- /dev/null +++ b/apps/authentik/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - namespace.yaml + - helm-repo.yaml + - authentik-secret.yaml + - certificate.yaml + - authentik.yaml + - ingress.yaml diff --git a/apps/authentik/namespace.yaml b/apps/authentik/namespace.yaml new file mode 100644 index 0000000..bb24d8d --- /dev/null +++ b/apps/authentik/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: authentik diff --git a/clusters/matrix/flux-system/authentik-sync.yaml b/clusters/matrix/flux-system/authentik-sync.yaml new file mode 100644 index 0000000..0ab0a75 --- /dev/null +++ b/clusters/matrix/flux-system/authentik-sync.yaml @@ -0,0 +1,18 @@ +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: authentik-apps + namespace: flux-system +spec: + interval: 1m + path: ./apps/authentik + prune: true + sourceRef: + kind: GitRepository + name: flux-system + decryption: + provider: sops + secretRef: + name: sops-age + dependsOn: + - name: infra-apps diff --git a/clusters/matrix/flux-system/kustomization.yaml b/clusters/matrix/flux-system/kustomization.yaml index 61edcce..f5a568b 100644 --- a/clusters/matrix/flux-system/kustomization.yaml +++ b/clusters/matrix/flux-system/kustomization.yaml @@ -6,3 +6,4 @@ resources: - infra-sync.yaml - monitoring-sync.yaml - production-sync.yaml + - authentik-sync.yaml