Compare commits

..

10 Commits

Author SHA1 Message Date
c2914ab9f6 feat: Added lldap
Some checks failed
kustomization/flux-system/fffa8587 reconciliation succeeded
kustomization/lldap/fffa8587 build failed
kustomization/cnpg/fffa8587 reconciliation succeeded
kustomization/reflector/fffa8587 health check failed
2025-12-18 03:01:12 +01:00
258eefe675 feat: Allow cnpg garage credentials reflection 2025-12-18 03:01:11 +01:00
516f198950 feat: Add reflector 2025-12-18 03:01:07 +01:00
d5ae48434e feat: Redirect http to https 2025-12-18 02:55:28 +01:00
b3febd862e feat: Added default gateway 2025-12-18 02:55:28 +01:00
633cb984fd feat: Move certificates to default namespace 2025-12-18 02:55:28 +01:00
21f793138c feat: Setup cilium L2 announcments and IP pool 2025-12-18 02:55:28 +01:00
f6024a46e5 feat: Move spegel to apps 2025-12-18 02:55:28 +01:00
d6ef8702a3 feat: Put ClusterIssuer under certificates 2025-12-18 02:55:28 +01:00
ac19ed42d1 feat: Added barman cloud plugin 2025-12-18 02:55:28 +01:00
58 changed files with 30 additions and 784 deletions

View File

@@ -19,8 +19,3 @@ 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

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

View File

@@ -1,16 +0,0 @@
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

@@ -1,15 +0,0 @@
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

@@ -1,29 +0,0 @@
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

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

View File

@@ -1,25 +0,0 @@
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

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

View File

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

View File

@@ -1,20 +0,0 @@
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

@@ -1,9 +0,0 @@
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

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

View File

@@ -1,61 +0,0 @@
pod:
kind: Deployment
replicas: 2
ingress:
enabled: true
gatewayAPI:
enabled: true
parentRefs:
- name: gateway
namespace: default
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: dragonfly.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

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

View File

@@ -1,7 +0,0 @@
apiVersion: dragonflydb.io/v1alpha1
kind: Dragonfly
metadata:
name: dragonfly
namespace: authelia
spec:
replicas: 2

View File

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

View File

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

View File

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

View File

@@ -1,7 +0,0 @@
apiVersion: dragonflydb.io/v1alpha1
kind: Dragonfly
metadata:
name: dragonfly
namespace: authelia
spec:
replicas: 1

View File

@@ -1,19 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../base
- dragonfly.yaml
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

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

View File

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

View File

@@ -1,16 +0,0 @@
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

@@ -1,7 +1,7 @@
apiVersion: postgresql.cnpg.io/v1 apiVersion: postgresql.cnpg.io/v1
kind: Cluster kind: Cluster
metadata: metadata:
name: db name: lldap-db
namespace: lldap namespace: lldap
# TODO: Add labels? # TODO: Add labels?
spec: spec:

View File

@@ -56,7 +56,7 @@ spec:
- name: LLDAP_DATABASE_URL - name: LLDAP_DATABASE_URL
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: db-app name: lldap-db-app
key: uri key: uri
- name: TZ - name: TZ
value: CET value: CET

View File

@@ -2,7 +2,7 @@ apiVersion: v1
kind: Secret kind: Secret
metadata: metadata:
name: s3-garage name: s3-garage
namespace: lldap namespace: cnpg-system
annotations: annotations:
reflector.v1.k8s.emberstack.com/reflects: "cnpg-system/s3-garage" reflector.v1.k8s.emberstack.com/reflects: "cnpg-system/s3-garage"
type: Opaque type: Opaque

View File

@@ -9,9 +9,3 @@ resources:
- http-route.yaml - http-route.yaml
- secret-s3-garage.yaml - secret-s3-garage.yaml
- object-store.yaml - object-store.yaml
# Uncomment to restore database from backup
# patches:
# - path: cluster-restore.yaml
# target:
# kind: Cluster

View File

@@ -5,7 +5,8 @@ metadata:
namespace: lldap namespace: lldap
spec: spec:
configuration: configuration:
destinationPath: s3://cnpg-backup/lldap destinationPath: s3://cnpg-backup/
endpointURL: http://192.178.1.1:3900
s3Credentials: s3Credentials:
accessKeyId: accessKeyId:
name: s3-garage name: s3-garage
@@ -13,8 +14,5 @@ spec:
secretAccessKey: secretAccessKey:
name: s3-garage name: s3-garage
key: ACCESS_SECRET_KEY key: ACCESS_SECRET_KEY
region:
name: s3-garage
key: REGION
wal: wal:
compression: gzip compression: gzip

View File

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

View File

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

View File

@@ -10,9 +10,6 @@ patches:
- path: cluster.yaml - path: cluster.yaml
target: target:
kind: Cluster kind: Cluster
- path: object-store.yaml
target:
kind: ObjectStore
- path: http-route.yaml - path: http-route.yaml
target: target:
kind: HTTPRoute kind: HTTPRoute

View File

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

View File

@@ -10,10 +10,6 @@ resources:
- ../../controllers/local-path-provisioner/local-path-provisioner.yaml - ../../controllers/local-path-provisioner/local-path-provisioner.yaml
- ../../controllers/cnpg/cnpg.yaml - ../../controllers/cnpg/cnpg.yaml
- ../../controllers/reflector/reflector.yaml - ../../controllers/reflector/reflector.yaml
- ../../controllers/lldap-controller/lldap-controller.yaml
- ../../controllers/authelia-controller/authelia-controller.yaml
- ../../controllers/dragonfly-operator/dragonfly-operator.yaml
- ../../controllers/kube-prometheus-stack/kube-prometheus-stack.yaml
- ../../configs/artifacts.yaml - ../../configs/artifacts.yaml
- ../../configs/cilium-config/cilium-config.yaml - ../../configs/cilium-config/cilium-config.yaml
@@ -24,4 +20,3 @@ 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

View File

@@ -44,13 +44,3 @@ spec:
copy: copy:
- from: "@foundation/controllers/reflector/**" - from: "@foundation/controllers/reflector/**"
to: "@artifact/" to: "@artifact/"
- name: dragonfly-operator
originRevision: "@foundation"
copy:
- from: "@foundation/controllers/dragonfly-operator/**"
to: "@artifact/"
- name: kube-prometheus-stack
originRevision: "@foundation"
copy:
- from: "@foundation/controllers/kube-prometheus-stack/**"
to: "@artifact/"

View File

@@ -1,26 +0,0 @@
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: OCIRepository
metadata:
name: authelia-controller
namespace: flux-system
spec:
interval: 1m0s
url: oci://git.huizinga.dev/infra/authelia-controller/manifests
ref:
tag: edge
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: authelia-controller
namespace: flux-system
spec:
interval: 1h
retryInterval: 2m
timeout: 5m
sourceRef:
kind: OCIRepository
name: authelia-controller
path: ./
prune: true
wait: true

View File

@@ -13,14 +13,9 @@ spec:
strategy: strategy:
name: RetryOnFailure name: RetryOnFailure
retryInterval: 3m retryInterval: 3m
chart: chartRef:
spec: kind: OCIRepository
chart: cert-manager
version: "1.19.x"
sourceRef:
kind: HelmRepository
name: cert-manager name: cert-manager
interval: 24h
values: values:
crds: crds:
enabled: true enabled: true

View File

@@ -1,9 +0,0 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: cert-manager
namespace: cert-manager
spec:
type: "oci"
interval: 24h
url: oci://quay.io/jetstack/charts/

View File

@@ -1,6 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1 apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization kind: Kustomization
resources: resources:
- namespace.yaml - ./namespace.yaml
- helm-repository.yaml - ./oci-repository.yaml
- helm-release.yaml - ./helm-release.yaml

View File

@@ -0,0 +1,13 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: OCIRepository
metadata:
name: cert-manager
namespace: cert-manager
spec:
interval: 24h
url: oci://quay.io/jetstack/charts/cert-manager
layerSelector:
mediaType: "application/vnd.cncf.helm.chart.content.v1.tar+gzip"
operation: copy
ref:
semver: "1.19.x"

View File

@@ -8,8 +8,7 @@ metadata:
type: Opaque type: Opaque
stringData: stringData:
ACCESS_KEY_ID: ENC[AES256_GCM,data:TOEQMG/kHs5XUk77ijyV089ZTq1dKsoZUas=,iv:mVDOkl5qOxGdvCvdcXUuUjX85oKqbd+n5maHsKwCiFg=,tag:pho0oWPTwtM6lGQ2vA1d5A==,type:str] ACCESS_KEY_ID: ENC[AES256_GCM,data:TOEQMG/kHs5XUk77ijyV089ZTq1dKsoZUas=,iv:mVDOkl5qOxGdvCvdcXUuUjX85oKqbd+n5maHsKwCiFg=,tag:pho0oWPTwtM6lGQ2vA1d5A==,type:str]
ACCESS_SECRET_KEY: ENC[AES256_GCM,data:INipEOcpPSij6TDu+bCuMOdsGm58nEBC4UJfEGRqeMmXZ9A+EBrMiRL6z3s29uz4qdqwZ3C8E4PVz01/41bMEA==,iv:x+gku8q7efHaaMpD/dc19IrwmK2gDp04bjH8WN/xhkc=,tag:QiSF6B8IqMrCsOUCe8c0bw==,type:str] SECRET_ACCESS_KEY: ENC[AES256_GCM,data:mc42T/AQ8NRi32SzvwGJA6LEq1x0Yz3Tu+CPDYPf+E2+C00zQcGRk6tACPvRoMxRzU4ZZpK346e2K/8ajU77hg==,iv:Isxe81aQEbI5xd1dRjXDKj/2Jp9eTHdv0/XVBBHoRyE=,tag:gtcmKmfUIfIy977Df11P4g==,type:str]
REGION: ENC[AES256_GCM,data:WIGPWwii,iv:ZdP5uNYqa8CZxa/xyrYXxGvE9fzt95slzwpzSzRy9DY=,tag:yANYtLzJCL/1pcvBXY7X7g==,type:str]
sops: sops:
age: age:
- recipient: age1860txadrlqrjwnqh0g466re2nt8jk7xhj640pq9gpsddpg23uynqsp2hul - recipient: age1860txadrlqrjwnqh0g466re2nt8jk7xhj640pq9gpsddpg23uynqsp2hul
@@ -30,8 +29,8 @@ sops:
K09tZGI0Z2w0eXh5eHcvcEttMy82aU0K2fnCDfYIShzw2Zipof+C8zf9pcOmiDg9 K09tZGI0Z2w0eXh5eHcvcEttMy82aU0K2fnCDfYIShzw2Zipof+C8zf9pcOmiDg9
2SCiIfAJs9MB3n078P068z77KpvdlJYOi9pUTKSBhNw+mBI24y6X6A== 2SCiIfAJs9MB3n078P068z77KpvdlJYOi9pUTKSBhNw+mBI24y6X6A==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2025-12-18T02:50:50Z" lastmodified: "2025-12-18T01:50:56Z"
mac: ENC[AES256_GCM,data:+kfs0EDnnZNnHMf91P6rAN52lugHFO4XcNJiKLpXt7bfTSMbiwgVbvRElXGTbLXLVSz70uZyzV/mt0ZcfEfPbwE/Pdh6SmFiWwQwLT1M50MdrxAWWYvSCS9r4h1Cow3N3K2/dXH7N/4AVHTg3ohXlP92fxVh1wL0cVnke/lcQgY=,iv:M5n9+lgq0fBx5Yg1e0N6v0obbnmarvVwIHAjCr5XmM4=,tag:NBA01MtG40T3nST7b00tiw==,type:str] mac: ENC[AES256_GCM,data:Wul3Dc7nvnBwmuTp+yIuaMRg//ui4rhZFsOlfOYeUx7z5ObGA0KIIgk8BM73/R4Hkzg2G/wKrUdWRa8wXFAwxzBEtFaXUgaSJhUjzMnDtVp+PiTLYWSYt8rx8S+lKbXk+2KLQOaHi10XO3P5JIXtEhP6K2a4rONwsi2224QPSec=,iv:OW4qY4oJXhi/EpktCW/9u8mhQQSaizc89lRFecOPo5w=,tag:fZqV8/0Nm/KGfGgmXNC4kg==,type:str]
pgp: pgp:
- created_at: "2025-12-11T23:56:15Z" - created_at: "2025-12-11T23:56:15Z"
enc: |- enc: |-

View File

@@ -1,15 +0,0 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: dragonfly-operator
namespace: flux-system
spec:
interval: 1h
retryInterval: 2m
timeout: 5m
sourceRef:
kind: ExternalArtifact
name: dragonfly-operator
path: .
prune: true
wait: true

View File

@@ -1,4 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- https://raw.githubusercontent.com/dragonflydb/dragonfly-operator/v1.3.1/manifests/dragonfly-operator.yaml

View File

@@ -1,16 +0,0 @@
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

@@ -1,15 +0,0 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: db
namespace: monitoring
# 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

@@ -1,7 +0,0 @@
apiVersion: dragonflydb.io/v1alpha1
kind: Dragonfly
metadata:
name: dragonfly
namespace: monitoring
spec:
replicas: 1

View File

@@ -1,53 +0,0 @@
# This is only the ldap config, you also need to enable ldap support in the main config file
# of Grafana. See https://grafana.com/docs/grafana/latest/auth/ldap/#enable-ldap
# You can test that it is working correctly by trying usernames at: https://<your grafana instance>/admin/ldap
[[servers]]
# Ldap server host (specify multiple hosts space separated)
host = "lldap.lldap.svc.cluster.local"
# Default port is 389 or 636 if use_ssl = true
port = 3890
# Set to true if LDAP server should use an encrypted TLS connection (either with STARTTLS or LDAPS)
use_ssl = false
# If set to true, use LDAP with STARTTLS instead of LDAPS
start_tls = false
# set to true if you want to skip SSL cert validation
ssl_skip_verify = false
# set to the path to your root CA certificate or leave unset to use system defaults
# root_ca_cert = "/path/to/certificate.crt"
# Authentication against LDAP servers requiring client certificates
# client_cert = "/path/to/client.crt"
# client_key = "/path/to/client.key"
# Search user bind dn
bind_dn = "${BIND_DN}"
# Search user bind password
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
bind_password = "${LDAP_PASSWORD}"
# User search filter
search_filter = "(&(|(uid=%s)(mail=%s))(objectClass=person))"
# If you want to limit to only users of a specific group use this instead:
# search_filter = "(&(uid=%s)(memberOf=cn=<your group>,ou=groups,dc=huizinga,dc=dev))"
# An array of base dns to search through
search_base_dns = ["dc=huizinga,dc=dev"]
# Specify names of the LDAP attributes your LDAP uses
[servers.attributes]
member_of = "memberOf"
email = "mail"
name = "givenName"
surname = "sn"
username = "uid"
# If you want to map your ldap groups to grafana's groups, see: https://grafana.com/docs/grafana/latest/auth/ldap/#group-mappings
# As a quick example, here is how you would map lldap's admin group to grafana's admin
[[servers.group_mappings]]
group_dn = "cn=lldap_admin,ou=groups,dc=huizinga,dc=dev"
org_role = "Admin"
grafana_admin = true
[[servers.group_mappings]]
group_dn = "*"
org_role = "Viewer"

View File

@@ -1,30 +0,0 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: kube-prometheus-stack
namespace: monitoring
spec:
interval: 12h
install:
strategy:
name: RetryOnFailure
retryInterval: 2m
upgrade:
strategy:
name: RetryOnFailure
retryInterval: 3m
chart:
spec:
chart: kube-prometheus-stack
version: "80.6.x"
sourceRef:
kind: HelmRepository
name: prometheus-community
interval: 24h
values:
grafana:
ldap:
existingSecret: grafana-ldap-toml
valuesFrom:
- kind: ConfigMap
name: values-base

View File

@@ -1,9 +0,0 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: prometheus-community
namespace: monitoring
spec:
type: "oci"
interval: 24h
url: oci://ghcr.io/prometheus-community/charts/

View File

@@ -1,18 +0,0 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: kube-prometheus-stack
namespace: flux-system
spec:
interval: 1h
retryInterval: 2m
timeout: 5m
dependsOn:
- name: dragonfly-operator
- name: lldap-controller
sourceRef:
kind: ExternalArtifact
name: kube-prometheus-stack
path: ./
prune: true
wait: true

View File

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

View File

@@ -1,11 +0,0 @@
nameReference:
- kind: ConfigMap
version: v1
fieldSpecs:
- path: spec/valuesFrom/name
kind: HelmRelease
- kind: Secret
version: v1
fieldSpecs:
- path: spec/values/grafana/ldap/existingSecret
kind: HelmRelease

View File

@@ -1,4 +0,0 @@
apiVersion: v1
kind: Namespace
metadata:
name: monitoring

View File

@@ -1,20 +0,0 @@
apiVersion: barmancloud.cnpg.io/v1
kind: ObjectStore
metadata:
name: garage-store
namespace: monitoring
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

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

View File

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

View File

@@ -1,86 +0,0 @@
alertmanager:
alertsmanagerSpec:
replicas: 1
route:
main:
enabled: true
hostnames:
- "alerts.staging.huizinga.dev"
parentRefs:
- name: gateway
namespace: default
prometheus:
prometheusSpec:
replicas: 1
route:
main:
enabled: true
hostnames:
- "prometheus.staging.huizinga.dev"
parentRefs:
- name: gateway
namespace: default
grafana:
replicas: 1
# ingress:
# enabled: true
# hosts:
# - grafana.${domain}
# tls:
# - secretName: ${domain//./-}-tls
# annotations:
# traefik.ingress.kubernetes.io/router.entryPoints: "websecure"
# traefik.ingress.kubernetes.io/router.middlewares: "authelia-forwardauth-authelia@kubernetescrd"
# traefik.ingress.kubernetes.io/router.tls: "true"
envValueFrom:
BIND_DN:
secretKeyRef:
name: grafana-lldap-credentials
key: bind_dn
LDAP_PASSWORD:
secretKeyRef:
name: grafana-lldap-credentials
key: password
grafana.ini:
auth.ldap:
enabled: true
# auth.proxy:
# enabled: true
# header_name: Remote-User
# header_property: username
# auto_sign_up: true
# headers: Groups:Remote-Group
# enable_login_token: false
# sync_ttl: 0
# signout_redirect_url: https://login.${domain}/logout?rd=https://grafana.${domain}
database:
type: postgres
host: $__file{/etc/secrets/db/host}
name: $__file{/etc/secrets/db/dbname}
user: $__file{/etc/secrets/db/user}
password: $__file{/etc/secrets/db/password}
remote_cache:
type: redis
connstr: addr=dragonflydb.monitoring:6379
ldap:
enabled: true
extraSecretMounts:
- name: db-app-mount
secretName: db-app
defaultMode: 0440
mountPath: /etc/secrets/db
readOnly: true
# We are not running kube-proxy
kubeProxy:
enabled: false

View File

@@ -1,28 +0,0 @@
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: OCIRepository
metadata:
name: lldap-controller
namespace: flux-system
spec:
interval: 1m0s
url: oci://git.huizinga.dev/infra/lldap-controller/manifests
ref:
tag: edge
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: lldap-controller
namespace: flux-system
spec:
interval: 1h
retryInterval: 2m
timeout: 5m
dependsOn:
- name: lldap
sourceRef:
kind: OCIRepository
name: lldap-controller
path: ./
prune: true
wait: true

View File

@@ -6,4 +6,4 @@ metadata:
spec: spec:
type: "oci" type: "oci"
interval: 24h interval: 24h
url: oci://ghcr.io/emberstack/helm-charts url: oci://ghcr.io/emberstack/helm-charts/reflector