Compare commits
10 Commits
c434f0822a
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
d51e723179
|
|||
|
fad4d94dc0
|
|||
|
bf226ea855
|
|||
|
dd873c296d
|
|||
|
e0babc5b5f
|
|||
|
995eddb4e8
|
|||
|
e2bd3ae33f
|
|||
|
35472754c0
|
|||
|
9154fafaef
|
|||
|
c0b51106f2
|
21
apps/artifacts.yaml
Normal file
21
apps/artifacts.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
apiVersion: source.extensions.fluxcd.io/v1beta1
|
||||
kind: ArtifactGenerator
|
||||
metadata:
|
||||
name: apps
|
||||
namespace: flux-system
|
||||
spec:
|
||||
sources:
|
||||
- alias: foundation
|
||||
kind: GitRepository
|
||||
name: flux-system
|
||||
artifacts:
|
||||
- name: spegel
|
||||
originRevision: "@foundation"
|
||||
copy:
|
||||
- from: "@foundation/apps/spegel/**"
|
||||
to: "@artifact/"
|
||||
- name: lldap
|
||||
originRevision: "@foundation"
|
||||
copy:
|
||||
- from: "@foundation/apps/lldap/**"
|
||||
to: "@artifact/"
|
||||
15
apps/lldap/base/cluster.yaml
Normal file
15
apps/lldap/base/cluster.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: Cluster
|
||||
metadata:
|
||||
name: lldap-db
|
||||
namespace: lldap
|
||||
# TODO: Add labels?
|
||||
spec:
|
||||
storage:
|
||||
size: 8Gi
|
||||
storageClass: local-path
|
||||
plugins:
|
||||
- name: barman-cloud.cloudnative-pg.io
|
||||
isWALArchiver: true
|
||||
parameters:
|
||||
barmanObjectName: garage-store
|
||||
80
apps/lldap/base/deployment.yaml
Normal file
80
apps/lldap/base/deployment.yaml
Normal file
@@ -0,0 +1,80 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: lldap
|
||||
namespace: lldap
|
||||
labels:
|
||||
app.kubernetes.io/name: lldap
|
||||
app.kubernetes.io/instance: lldap
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: lldap
|
||||
app.kubernetes.io/instance: lldap
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: lldap
|
||||
app.kubernetes.io/instance: lldap
|
||||
spec:
|
||||
topologySpreadConstraints:
|
||||
- maxSkew: 1
|
||||
topologyKey: kubernetes.io/hostname
|
||||
whenUnsatisfiable: DoNotSchedule
|
||||
labelSelector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: lldap
|
||||
app.kubernetes.io/instance: lldap
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
containers:
|
||||
- name: lldap
|
||||
image: lldap/lldap:2025-12-12-alpine-rootless
|
||||
env:
|
||||
- name: LLDAP_LDAP_BASE_DN
|
||||
value: dc=huizinga,dc=dev
|
||||
- name: LLDAP_LDAP_USER_PASS
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: credentials
|
||||
key: admin-pass
|
||||
- name: LLDAP_KEY_SEED
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: credentials
|
||||
key: key-seed
|
||||
- name: LLDAP_JWT_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: credentials
|
||||
key: jwt-secret
|
||||
- name: LLDAP_DATABASE_URL
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: lldap-db-app
|
||||
key: uri
|
||||
- name: TZ
|
||||
value: CET
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /app/lldap
|
||||
- healthcheck
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 30
|
||||
ports:
|
||||
- name: ldap
|
||||
containerPort: 3890
|
||||
- name: web
|
||||
containerPort: 17170
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
runAsNonRoot: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
13
apps/lldap/base/http-route.yaml
Normal file
13
apps/lldap/base/http-route.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
apiVersion: gateway.networking.k8s.io/v1beta1
|
||||
kind: HTTPRoute
|
||||
metadata:
|
||||
name: lldap
|
||||
namespace: lldap
|
||||
spec:
|
||||
parentRefs:
|
||||
- name: gateway
|
||||
namespace: default
|
||||
rules:
|
||||
- backendRefs:
|
||||
- name: lldap
|
||||
port: 17170
|
||||
11
apps/lldap/base/kustomization.yaml
Normal file
11
apps/lldap/base/kustomization.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- cluster.yaml
|
||||
- schedule-backup.yaml
|
||||
- deployment.yaml
|
||||
- service.yaml
|
||||
- http-route.yaml
|
||||
- secret-s3-garage.yaml
|
||||
- object-store.yaml
|
||||
@@ -1,4 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: certificates
|
||||
name: lldap
|
||||
@@ -2,11 +2,11 @@ apiVersion: barmancloud.cnpg.io/v1
|
||||
kind: ObjectStore
|
||||
metadata:
|
||||
name: garage-store
|
||||
namespace: cnpg-system
|
||||
namespace: lldap
|
||||
spec:
|
||||
configuration:
|
||||
destinationPath: s3://cnpg-backup/
|
||||
endpointURL: http://192.178.1.1:3900
|
||||
endpointURL: http://192.168.1.1:3900
|
||||
s3Credentials:
|
||||
accessKeyId:
|
||||
name: s3-garage
|
||||
@@ -14,5 +14,8 @@ spec:
|
||||
secretAccessKey:
|
||||
name: s3-garage
|
||||
key: ACCESS_SECRET_KEY
|
||||
region:
|
||||
name: s3-garage
|
||||
key: REGION
|
||||
wal:
|
||||
compression: gzip
|
||||
13
apps/lldap/base/schedule-backup.yaml
Normal file
13
apps/lldap/base/schedule-backup.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: ScheduledBackup
|
||||
metadata:
|
||||
name: daily-backup
|
||||
namespace: lldap
|
||||
spec:
|
||||
schedule: "0 0 0 * * *"
|
||||
backupOwnerReference: self
|
||||
method: plugin
|
||||
pluginConfiguration:
|
||||
name: barman-cloud.cloudnative-pg.io
|
||||
cluster:
|
||||
name: db
|
||||
9
apps/lldap/base/secret-s3-garage.yaml
Normal file
9
apps/lldap/base/secret-s3-garage.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: s3-garage
|
||||
namespace: lldap
|
||||
annotations:
|
||||
reflector.v1.k8s.emberstack.com/reflects: "cnpg-system/s3-garage"
|
||||
type: Opaque
|
||||
data: {}
|
||||
19
apps/lldap/base/service.yaml
Normal file
19
apps/lldap/base/service.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: lldap
|
||||
namespace: lldap
|
||||
labels:
|
||||
app.kubernetes.io/name: lldap
|
||||
app.kubernetes.io/instance: lldap
|
||||
spec:
|
||||
selector:
|
||||
app.kubernetes.io/name: lldap
|
||||
app.kubernetes.io/instance: lldap
|
||||
ports:
|
||||
- name: ldap
|
||||
port: 3890
|
||||
targetPort: ldap
|
||||
- name: web
|
||||
port: 17170
|
||||
targetPort: web
|
||||
@@ -1,21 +1,21 @@
|
||||
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||
kind: Kustomization
|
||||
metadata:
|
||||
name: letsencrypt
|
||||
name: lldap
|
||||
namespace: flux-system
|
||||
spec:
|
||||
interval: 1h
|
||||
retryInterval: 2m
|
||||
timeout: 5m
|
||||
dependsOn:
|
||||
- name: cert-manager
|
||||
- name: cnpg
|
||||
sourceRef:
|
||||
kind: ExternalArtifact
|
||||
name: letsencrypt
|
||||
name: lldap
|
||||
decryption:
|
||||
provider: sops
|
||||
secretRef:
|
||||
name: sops-gpg
|
||||
path: ./
|
||||
path: ./${cluster_env}
|
||||
prune: true
|
||||
wait: true
|
||||
6
apps/lldap/production/cluster.yaml
Normal file
6
apps/lldap/production/cluster.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: Cluster
|
||||
metadata:
|
||||
name: lldap-db
|
||||
spec:
|
||||
instances: 2
|
||||
7
apps/lldap/production/deployment.yaml
Normal file
7
apps/lldap/production/deployment.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: lldap
|
||||
namespace: lldap
|
||||
spec:
|
||||
replicas: 2
|
||||
8
apps/lldap/production/http-route.yaml
Normal file
8
apps/lldap/production/http-route.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
apiVersion: gateway.networking.k8s.io/v1beta1
|
||||
kind: HTTPRoute
|
||||
metadata:
|
||||
name: lldap
|
||||
namespace: lldap
|
||||
spec:
|
||||
hostnames:
|
||||
- "users.huizinga.dev"
|
||||
15
apps/lldap/production/kustomization.yaml
Normal file
15
apps/lldap/production/kustomization.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- ../base
|
||||
- secret-credentials.enc.yaml
|
||||
patches:
|
||||
- path: deployment.yaml
|
||||
target:
|
||||
kind: Deployment
|
||||
- path: cluster.yaml
|
||||
target:
|
||||
kind: Cluster
|
||||
- path: http-route.yaml
|
||||
target:
|
||||
kind: HTTPRoute
|
||||
59
apps/lldap/production/secret-credentials.enc.yaml
Normal file
59
apps/lldap/production/secret-credentials.enc.yaml
Normal file
@@ -0,0 +1,59 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: credentials
|
||||
namespace: lldap
|
||||
labels:
|
||||
app.kubernetes.io/name: lldap
|
||||
app.kubernetes.io/instance: lldap
|
||||
type: Opaque
|
||||
data:
|
||||
jwt-secret: ENC[AES256_GCM,data:yUAsoCIEXH491Ko4wEAAevSETdMFuhypNzuU2th5zlLd9hbVKqsjclvCTLDD8aW0Y9Lv70pzzAADPwFCKNH/rXx0DzaGOP139kLRYDHafz3RYeuoJjgBGw==,iv:x3EmPbbL/aj9CbwF8lleDL+nhlidPU8R3hwXygtj7D8=,tag:XD4C/pwFLFmDryBW7NqsWg==,type:str]
|
||||
key-seed: ENC[AES256_GCM,data:3jWLtfny+ahtSkkmUdbg+wFbSGIcCxOv9BxVr0oNLTetXrAx+OcZ6dKp1ktj0J9aYEppqVuANUlfqyVzhIQXOT5GomQ+9jPC4uLmIz9tu1LAcfv9zuGl/w==,iv:e3aAI6JWq16YaUZqvKulkHyhLb8eWy9t2ni/jGeNFow=,tag:sZEEvxlq145klFkEMsUOuA==,type:str]
|
||||
#ENC[AES256_GCM,data:AnCuvbVM6M62wuWmpUx3u/5WdaCo1T7eCvbY30okKbmWnvM0HQT2gGDTuhIaOlc=,iv:Ho+/CAvs69VJ+uwAIH8LVL344qlDaK5z3AvzWh/Jgm0=,tag:uNfN1P7lmWKBuCY7eiywDw==,type:comment]
|
||||
admin-pass: ENC[AES256_GCM,data:yWzQTjN8kuGroShan7NxAw==,iv:IHw237PAqNNZ7KXIy2D8XMCLWSi3kJpLEnILhGm/Xl4=,tag:N79GjKNZNh9qJO+dpa0InQ==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- recipient: age1860txadrlqrjwnqh0g466re2nt8jk7xhj640pq9gpsddpg23uynqsp2hul
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCdVFuM2xvazBXY3kwTXVD
|
||||
ZXdOS0pJLzVTVGJBb3RqYlhUN2IvNDNRSzNzCm8zcmlIU2h3RityUWFkZXU1R2xp
|
||||
VUlobGZuOG1wbGxIMXVVekRaYTNGQUkKLS0tIHlMWkI0Qk9nUys1Sm4yNnVsakho
|
||||
ZXl2RDhNNFZORW5lOGphSVY5WVJycWMKvnGem7wolSKMa8lshD90bMohdLMgYiTq
|
||||
gHRN22irgd4pA2CpTcY47T2zhtVHU36PCXn+QFN936uF0vLf8Srwow==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1hktythzvsnth6u5en2lvag0tftnj9r03w7rpnzfgzgf5w95qxycq2azufj
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkRHNUOXZFUGxEY0RRSGtz
|
||||
OElnckFUVG1WOXhvZHhzczUxU3lZZlE5emo4Ck5qRnF6M1NCeGdkUVNuR0xzMWxs
|
||||
SEdVL0lwOXJmWVdEZ0t3V2Jscy9lZG8KLS0tIGM0WC8vbEdHQ2puRVZIK3lXeUJJ
|
||||
OVNqZnhRUEN5dTBBVXVlSDlidEU4K3cKhv2jSc+lJu+s3hbH6j1xrkaQSzds82rk
|
||||
dlaisVQxQmxjKcyPHqudJZS6Qfq3kEn9cZOP4G8NYAh0zhzGvCKeqA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-12-17T02:58:02Z"
|
||||
mac: ENC[AES256_GCM,data:yxmBIqS+KMr2Dp4eKslT1oNCcq2VEnGh4g3e7mkZzWjT6xPTdBEH8bT+c2XIFMWHJSUFoI7YyhvS1p5VgRBudaDyQCOk7tzyj0nkGiepZc1uYjSVO7VQ9CnfcdiD9AZ2srUjkcUoBaRfi2u6Qh2pPUUwMd4z8ms8v0CSk1qw0FE=,iv:V2rw624TN+pSGuq+JjVqM2bKozn7hGAykHV+638wo14=,tag:cdDascdYzzG33GztMd0Fdg==,type:str]
|
||||
pgp:
|
||||
- created_at: "2025-12-17T00:53:29Z"
|
||||
enc: |-
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
hQIMA51kG++kLewoAQ/7BepX/31nKyUHnKC/7VnqTJk0x/gLmhko1/NukkApraXe
|
||||
ctmZVk4TlG9N+DqEPHUYeMt7pu/1rvnWckh/OR2JU7AK8E33tnWITvr4AzQjk0zH
|
||||
/V8n36ZA5/8Ppt9LJJSMVLaFEFjqiFy39Ggt6bx0SUX/CczTGkUYp+aJQfmDn+uR
|
||||
GcJk9wR9/bu7+iOq8kuOA+renxGmdIcfMd6GKiHYScgv5tDN7pg7upXh1NPrVB8u
|
||||
3GTor40B1Ncjqv3L1Zbw1AZYdsmFRkSx1N2JJkxPZYbvI6cwuFMcFkXuX6JfuL8T
|
||||
pW5ddsK/DF0qXAXSc378juOh/tRdktFz2QPv9X5CJnQUk0c19Beqb4tG4cVR9sF3
|
||||
SXTpaNmR4GG3ilY3ispzso7CQe+7RvLWGgsZAgPD1uC9SJGOBfvReJvQZUXyxUGo
|
||||
/riTbUgFaBHmY6XWGy7Ecni333GtfGeN8qSIgPRhHg5f/BJX9Rp5ZG373S7iLuI4
|
||||
GpM12knQCjxfsMXjMs6/TtAwYhnIFG3WcCzJFzn+pqBiW7XJvegJPQAID5LDo4GG
|
||||
EzCZylto1WCgRhdq+CNuybQTsj4TbvxzfPYf+gCURbisH8A3TTWp4eyyXHg5KS4z
|
||||
0TECkXpUXR/sD71HuBjxz1jfZiXFruDBldZDzZ2tZDdqQxAtk/DJGXcLmWF+HMbS
|
||||
XgEvCI5gci7pYlsi60yitBcTPV2eEBh4zbRV53e12RGuhPwkxenX+6YRSCi0liOk
|
||||
5BizeCkfSRCLQHG1okeb1RIdnSoyOJ+KlrR4Y+1xeZp9ruWn/tPN7L3jCx8SX+Y=
|
||||
=j+fd
|
||||
-----END PGP MESSAGE-----
|
||||
fp: CD17A34CBFB21DE9A73D47EB76BDEC4E165D8AD9
|
||||
encrypted_regex: ^(data|stringData)$
|
||||
version: 3.11.0
|
||||
6
apps/lldap/staging/cluster.yaml
Normal file
6
apps/lldap/staging/cluster.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: Cluster
|
||||
metadata:
|
||||
name: lldap-db
|
||||
spec:
|
||||
instances: 1
|
||||
7
apps/lldap/staging/deployment.yaml
Normal file
7
apps/lldap/staging/deployment.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: lldap
|
||||
namespace: lldap
|
||||
spec:
|
||||
replicas: 1
|
||||
8
apps/lldap/staging/http-route.yaml
Normal file
8
apps/lldap/staging/http-route.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
apiVersion: gateway.networking.k8s.io/v1beta1
|
||||
kind: HTTPRoute
|
||||
metadata:
|
||||
name: lldap
|
||||
namespace: lldap
|
||||
spec:
|
||||
hostnames:
|
||||
- "users.staging.huizinga.dev"
|
||||
15
apps/lldap/staging/kustomization.yaml
Normal file
15
apps/lldap/staging/kustomization.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- ../base
|
||||
- secret-credentials.enc.yaml
|
||||
patches:
|
||||
- path: deployment.yaml
|
||||
target:
|
||||
kind: Deployment
|
||||
- path: cluster.yaml
|
||||
target:
|
||||
kind: Cluster
|
||||
- path: http-route.yaml
|
||||
target:
|
||||
kind: HTTPRoute
|
||||
58
apps/lldap/staging/secret-credentials.enc.yaml
Normal file
58
apps/lldap/staging/secret-credentials.enc.yaml
Normal file
@@ -0,0 +1,58 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: credentials
|
||||
namespace: lldap
|
||||
labels:
|
||||
app.kubernetes.io/name: lldap
|
||||
app.kubernetes.io/instance: lldap
|
||||
type: Opaque
|
||||
data:
|
||||
jwt-secret: ENC[AES256_GCM,data:cwKfSMzPPECNAba++x5ampK0pgCvOKRIEdPfLH5deDpnEASSlBjQZVo238YepBIAYu7Y0HCXCPppOtpX8zymD7Jxu1f5TrJoOJMwAlHYWT+IeBRVtpzgYA==,iv:bkNDqEriEnuSzvXxXAypGfwynPjYCVwN0NoAmcDftUc=,tag:DFkoIf92W8Ed60+azsfU+A==,type:str]
|
||||
key-seed: ENC[AES256_GCM,data:bLpK9Tk5Eh2WBI5x94MssCyYEsMUMTJJymbdwsVeA6K/qBCxkPGkXf+kZZoaXkyLqW2lrPa8jIGv3LV6C4PqVJ+UOlgnvagQnCGnLylqX+3wkVhKLP5uYg==,iv:1RPLzof2Fwqm08Tfq7HR2esvPvkfBg0Uc+aM2SzpHhE=,tag:IsgLxUQriU9JUX2gEe/j8A==,type:str]
|
||||
admin-pass: ENC[AES256_GCM,data:yWzQTjN8kuGroShan7NxAw==,iv:IHw237PAqNNZ7KXIy2D8XMCLWSi3kJpLEnILhGm/Xl4=,tag:N79GjKNZNh9qJO+dpa0InQ==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- recipient: age1860txadrlqrjwnqh0g466re2nt8jk7xhj640pq9gpsddpg23uynqsp2hul
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCdVFuM2xvazBXY3kwTXVD
|
||||
ZXdOS0pJLzVTVGJBb3RqYlhUN2IvNDNRSzNzCm8zcmlIU2h3RityUWFkZXU1R2xp
|
||||
VUlobGZuOG1wbGxIMXVVekRaYTNGQUkKLS0tIHlMWkI0Qk9nUys1Sm4yNnVsakho
|
||||
ZXl2RDhNNFZORW5lOGphSVY5WVJycWMKvnGem7wolSKMa8lshD90bMohdLMgYiTq
|
||||
gHRN22irgd4pA2CpTcY47T2zhtVHU36PCXn+QFN936uF0vLf8Srwow==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1hktythzvsnth6u5en2lvag0tftnj9r03w7rpnzfgzgf5w95qxycq2azufj
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkRHNUOXZFUGxEY0RRSGtz
|
||||
OElnckFUVG1WOXhvZHhzczUxU3lZZlE5emo4Ck5qRnF6M1NCeGdkUVNuR0xzMWxs
|
||||
SEdVL0lwOXJmWVdEZ0t3V2Jscy9lZG8KLS0tIGM0WC8vbEdHQ2puRVZIK3lXeUJJ
|
||||
OVNqZnhRUEN5dTBBVXVlSDlidEU4K3cKhv2jSc+lJu+s3hbH6j1xrkaQSzds82rk
|
||||
dlaisVQxQmxjKcyPHqudJZS6Qfq3kEn9cZOP4G8NYAh0zhzGvCKeqA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-12-17T00:53:29Z"
|
||||
mac: ENC[AES256_GCM,data:6/I2J7u9fGUdz2SbAF7dL2j5XQMICx+AgEaUQ3HUN/RvlhMzn9J3EdcLFQ+d9YwbSpCzuGTQBfqsky2oaD6fQWWefCOXAVdElCp2rxHAGK9u2pqhPbgcvbHKAWfvK2kml8qhjjam346xpj2yeP8UdWq6+KZq8B5OBsKYtx4KuKM=,iv:EeLpcggrglMvpUdjvH6rOyNRj2EkuToIwc+uEPUnlvI=,tag:juTwo5RbhGnddB3MF3WirQ==,type:str]
|
||||
pgp:
|
||||
- created_at: "2025-12-17T00:53:29Z"
|
||||
enc: |-
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
hQIMA51kG++kLewoAQ/7BepX/31nKyUHnKC/7VnqTJk0x/gLmhko1/NukkApraXe
|
||||
ctmZVk4TlG9N+DqEPHUYeMt7pu/1rvnWckh/OR2JU7AK8E33tnWITvr4AzQjk0zH
|
||||
/V8n36ZA5/8Ppt9LJJSMVLaFEFjqiFy39Ggt6bx0SUX/CczTGkUYp+aJQfmDn+uR
|
||||
GcJk9wR9/bu7+iOq8kuOA+renxGmdIcfMd6GKiHYScgv5tDN7pg7upXh1NPrVB8u
|
||||
3GTor40B1Ncjqv3L1Zbw1AZYdsmFRkSx1N2JJkxPZYbvI6cwuFMcFkXuX6JfuL8T
|
||||
pW5ddsK/DF0qXAXSc378juOh/tRdktFz2QPv9X5CJnQUk0c19Beqb4tG4cVR9sF3
|
||||
SXTpaNmR4GG3ilY3ispzso7CQe+7RvLWGgsZAgPD1uC9SJGOBfvReJvQZUXyxUGo
|
||||
/riTbUgFaBHmY6XWGy7Ecni333GtfGeN8qSIgPRhHg5f/BJX9Rp5ZG373S7iLuI4
|
||||
GpM12knQCjxfsMXjMs6/TtAwYhnIFG3WcCzJFzn+pqBiW7XJvegJPQAID5LDo4GG
|
||||
EzCZylto1WCgRhdq+CNuybQTsj4TbvxzfPYf+gCURbisH8A3TTWp4eyyXHg5KS4z
|
||||
0TECkXpUXR/sD71HuBjxz1jfZiXFruDBldZDzZ2tZDdqQxAtk/DJGXcLmWF+HMbS
|
||||
XgEvCI5gci7pYlsi60yitBcTPV2eEBh4zbRV53e12RGuhPwkxenX+6YRSCi0liOk
|
||||
5BizeCkfSRCLQHG1okeb1RIdnSoyOJ+KlrR4Y+1xeZp9ruWn/tPN7L3jCx8SX+Y=
|
||||
=j+fd
|
||||
-----END PGP MESSAGE-----
|
||||
fp: CD17A34CBFB21DE9A73D47EB76BDEC4E165D8AD9
|
||||
encrypted_regex: ^(data|stringData)$
|
||||
version: 3.11.0
|
||||
@@ -6,15 +6,17 @@ resources:
|
||||
- ../../controllers/artifacts.yaml
|
||||
- ../../controllers/cilium/cilium.yaml
|
||||
- ../../controllers/cert-manager/cert-manager.yaml
|
||||
- ../../controllers/spegel/spegel.yaml
|
||||
- ../../controllers/longhorn/longhorn.yaml
|
||||
- ../../controllers/local-path-provisioner/local-path-provisioner.yaml
|
||||
- ../../controllers/cnpg/cnpg.yaml
|
||||
- ../../controllers/barman-cloud-plugin/barman-cloud-plugin.yaml
|
||||
- ../../controllers/reflector/reflector.yaml
|
||||
|
||||
- ../../configs/artifacts.yaml
|
||||
- ../../configs/letsencrypt/letsencrypt.yaml
|
||||
- ../../configs/cilium-config/cilium-config.yaml
|
||||
- ../../configs/certificates/certificates.yaml
|
||||
- ../../configs/alerts/alerts.yaml
|
||||
- ../../configs/longhorn-jobs/longhorn-jobs.yaml
|
||||
- ../../configs/barman-config/barman-config.yaml
|
||||
|
||||
- ../../apps/artifacts.yaml
|
||||
- ../../apps/spegel/spegel.yaml
|
||||
- ../../apps/lldap/lldap.yaml
|
||||
|
||||
@@ -9,10 +9,10 @@ spec:
|
||||
kind: GitRepository
|
||||
name: flux-system
|
||||
artifacts:
|
||||
- name: letsencrypt
|
||||
- name: cilium-config
|
||||
originRevision: "@foundation"
|
||||
copy:
|
||||
- from: "@foundation/configs/letsencrypt/**"
|
||||
- from: "@foundation/configs/cilium-config/**"
|
||||
to: "@artifact/"
|
||||
- name: certificates
|
||||
originRevision: "@foundation"
|
||||
@@ -29,8 +29,3 @@ spec:
|
||||
copy:
|
||||
- from: "@foundation/configs/longhorn-jobs/**"
|
||||
to: "@artifact/"
|
||||
- name: barman-config
|
||||
originRevision: "@foundation"
|
||||
copy:
|
||||
- from: "@foundation/configs/barman-config/**"
|
||||
to: "@artifact/"
|
||||
|
||||
@@ -2,7 +2,7 @@ apiVersion: cert-manager.io/v1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: huizinga-dev
|
||||
namespace: certificates
|
||||
namespace: default
|
||||
spec:
|
||||
secretName: huizinga-dev-tls
|
||||
issuerRef:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- certificate-huizinga-dev.yaml
|
||||
- secret-cloudflare-token.enc.yaml
|
||||
- cluster-issuer.yaml
|
||||
|
||||
@@ -8,10 +8,14 @@ spec:
|
||||
retryInterval: 2m
|
||||
timeout: 15m
|
||||
dependsOn:
|
||||
- name: letsencrypt
|
||||
- name: cert-manager
|
||||
sourceRef:
|
||||
kind: ExternalArtifact
|
||||
name: certificates
|
||||
decryption:
|
||||
provider: sops
|
||||
secretRef:
|
||||
name: sops-gpg
|
||||
path: ./${cluster_env}
|
||||
prune: true
|
||||
wait: true
|
||||
|
||||
@@ -2,7 +2,7 @@ apiVersion: cert-manager.io/v1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: huizinga-dev
|
||||
namespace: certificates
|
||||
namespace: default
|
||||
spec:
|
||||
commonName: "huizinga.dev"
|
||||
dnsNames:
|
||||
|
||||
@@ -2,7 +2,7 @@ apiVersion: cert-manager.io/v1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: huizinga-dev
|
||||
namespace: certificates
|
||||
namespace: default
|
||||
spec:
|
||||
commonName: "staging.huizinga.dev"
|
||||
dnsNames:
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
apiVersion: cilium.io/v2alpha1
|
||||
kind: CiliumL2AnnouncementPolicy
|
||||
metadata:
|
||||
name: default-policy
|
||||
spec:
|
||||
interfaces:
|
||||
- ^eth[0-9]+
|
||||
externalIPs: true
|
||||
loadBalancerIPs: true
|
||||
24
configs/cilium-config/base/gateway.yaml
Normal file
24
configs/cilium-config/base/gateway.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
apiVersion: gateway.networking.k8s.io/v1
|
||||
kind: Gateway
|
||||
metadata:
|
||||
name: gateway
|
||||
namespace: default
|
||||
spec:
|
||||
gatewayClassName: cilium
|
||||
listeners:
|
||||
- name: http
|
||||
protocol: HTTP
|
||||
port: 80
|
||||
allowedRoutes:
|
||||
namespaces:
|
||||
from: Same
|
||||
- name: https
|
||||
protocol: HTTPS
|
||||
port: 443
|
||||
tls:
|
||||
certificateRefs:
|
||||
- kind: Secret
|
||||
name: huizinga-dev-tls
|
||||
allowedRoutes:
|
||||
namespaces:
|
||||
from: All
|
||||
@@ -0,0 +1,15 @@
|
||||
apiVersion: gateway.networking.k8s.io/v1
|
||||
kind: HTTPRoute
|
||||
metadata:
|
||||
name: http-filter-redirect
|
||||
namespace: default
|
||||
spec:
|
||||
parentRefs:
|
||||
- name: gateway
|
||||
sectionName: http
|
||||
rules:
|
||||
- filters:
|
||||
- type: RequestRedirect
|
||||
requestRedirect:
|
||||
scheme: https
|
||||
statusCode: 301
|
||||
6
configs/cilium-config/base/kustomization.yaml
Normal file
6
configs/cilium-config/base/kustomization.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- cilium-l2-announcement-policy.yaml
|
||||
- gateway.yaml
|
||||
- http-route-http-filter-redirect.yaml
|
||||
@@ -1,21 +1,17 @@
|
||||
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||
kind: Kustomization
|
||||
metadata:
|
||||
name: barman-config
|
||||
name: cilium-config
|
||||
namespace: flux-system
|
||||
spec:
|
||||
interval: 1h
|
||||
retryInterval: 2m
|
||||
timeout: 5m
|
||||
decryption:
|
||||
provider: sops
|
||||
secretRef:
|
||||
name: sops-gpg
|
||||
timeout: 15m
|
||||
dependsOn:
|
||||
- name: barman-cloud-plugin
|
||||
- name: cilium
|
||||
sourceRef:
|
||||
kind: ExternalArtifact
|
||||
name: barman-config
|
||||
path: .
|
||||
name: cilium-config
|
||||
path: ./${cluster_env}
|
||||
prune: true
|
||||
wait: true
|
||||
@@ -0,0 +1,7 @@
|
||||
apiVersion: cilium.io/v2alpha1
|
||||
kind: CiliumLoadBalancerIPPool
|
||||
metadata:
|
||||
name: default-pool
|
||||
spec:
|
||||
blocks:
|
||||
- cidr: 10.0.2.100/24
|
||||
@@ -1,5 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- object-store.yaml
|
||||
- secret-s3-garage.enc.yaml
|
||||
- ../base
|
||||
- cilium-load-balancer-ip-pool.yaml
|
||||
@@ -0,0 +1,8 @@
|
||||
apiVersion: cilium.io/v2alpha1
|
||||
kind: CiliumLoadBalancerIPPool
|
||||
metadata:
|
||||
name: default-pool
|
||||
spec:
|
||||
blocks:
|
||||
- start: 192.168.1.100
|
||||
stop: 192.168.1.200
|
||||
@@ -1,5 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- secret-cloudflare-token.enc.yaml
|
||||
- cluster-issuer.yaml
|
||||
- ../base
|
||||
- cilium-load-balancer-ip-pool.yaml
|
||||
@@ -19,11 +19,6 @@ spec:
|
||||
copy:
|
||||
- from: "@foundation/controllers/cert-manager/**"
|
||||
to: "@artifact/"
|
||||
- name: spegel
|
||||
originRevision: "@foundation"
|
||||
copy:
|
||||
- from: "@foundation/controllers/spegel/**"
|
||||
to: "@artifact/"
|
||||
- name: openebs
|
||||
originRevision: "@foundation"
|
||||
copy:
|
||||
@@ -44,8 +39,8 @@ spec:
|
||||
copy:
|
||||
- from: "@foundation/controllers/cnpg/**"
|
||||
to: "@artifact/"
|
||||
- name: barman-cloud-plugin
|
||||
- name: reflector
|
||||
originRevision: "@foundation"
|
||||
copy:
|
||||
- from: "@foundation/controllers/barman-cloud-plugin/**"
|
||||
- from: "@foundation/controllers/reflector/**"
|
||||
to: "@artifact/"
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- https://github.com/cloudnative-pg/plugin-barman-cloud/releases/download/v0.9.0/manifest.yaml
|
||||
@@ -4,6 +4,7 @@ resources:
|
||||
- namespace.yaml
|
||||
- helm-repository.yaml
|
||||
- helm-release.yaml
|
||||
- https://github.com/cloudnative-pg/plugin-barman-cloud/releases/download/v0.9.0/manifest.yaml
|
||||
|
||||
configurations:
|
||||
- name-reference.yaml
|
||||
|
||||
@@ -7,6 +7,12 @@ spec:
|
||||
interval: 1h
|
||||
retryInterval: 2m
|
||||
timeout: 5m
|
||||
decryption:
|
||||
provider: sops
|
||||
secretRef:
|
||||
name: sops-gpg
|
||||
dependsOn:
|
||||
- name: cert-manager
|
||||
sourceRef:
|
||||
kind: ExternalArtifact
|
||||
name: cnpg
|
||||
|
||||
@@ -2,6 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- ../base
|
||||
- secret-s3-garage.enc.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: values-overlay
|
||||
|
||||
@@ -3,10 +3,13 @@ kind: Secret
|
||||
metadata:
|
||||
name: s3-garage
|
||||
namespace: cnpg-system
|
||||
annotations:
|
||||
reflector.v1.k8s.emberstack.com/reflection-allowed: "true"
|
||||
type: Opaque
|
||||
stringData:
|
||||
ACCESS_KEY_ID: ENC[AES256_GCM,data:TOEQMG/kHs5XUk77ijyV089ZTq1dKsoZUas=,iv:mVDOkl5qOxGdvCvdcXUuUjX85oKqbd+n5maHsKwCiFg=,tag:pho0oWPTwtM6lGQ2vA1d5A==,type:str]
|
||||
SECRET_ACCESS_KEY: ENC[AES256_GCM,data:mc42T/AQ8NRi32SzvwGJA6LEq1x0Yz3Tu+CPDYPf+E2+C00zQcGRk6tACPvRoMxRzU4ZZpK346e2K/8ajU77hg==,iv:Isxe81aQEbI5xd1dRjXDKj/2Jp9eTHdv0/XVBBHoRyE=,tag:gtcmKmfUIfIy977Df11P4g==,type:str]
|
||||
ACCESS_SECRET_KEY: ENC[AES256_GCM,data:INipEOcpPSij6TDu+bCuMOdsGm58nEBC4UJfEGRqeMmXZ9A+EBrMiRL6z3s29uz4qdqwZ3C8E4PVz01/41bMEA==,iv:x+gku8q7efHaaMpD/dc19IrwmK2gDp04bjH8WN/xhkc=,tag:QiSF6B8IqMrCsOUCe8c0bw==,type:str]
|
||||
REGION: ENC[AES256_GCM,data:WIGPWwii,iv:ZdP5uNYqa8CZxa/xyrYXxGvE9fzt95slzwpzSzRy9DY=,tag:yANYtLzJCL/1pcvBXY7X7g==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- recipient: age1860txadrlqrjwnqh0g466re2nt8jk7xhj640pq9gpsddpg23uynqsp2hul
|
||||
@@ -27,8 +30,8 @@ sops:
|
||||
K09tZGI0Z2w0eXh5eHcvcEttMy82aU0K2fnCDfYIShzw2Zipof+C8zf9pcOmiDg9
|
||||
2SCiIfAJs9MB3n078P068z77KpvdlJYOi9pUTKSBhNw+mBI24y6X6A==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-12-15T03:46:42Z"
|
||||
mac: ENC[AES256_GCM,data:UG9rSQ4ep7Ln4g5QCtvD6U90Oc8iWpni+kypMpJ+AQM8LC0TTs9zFQgcxmo2wjZn38Fp+br/5KC172SqBNG4Q1yXhlRiqiIeyx9ynrZeceRSqHaaruB1hj83/0FwahqjB/t6yutWIfnp00UC92mMKGlef48UNZ8IW17e5uHE0m4=,iv:LvR4BEkgAr6PJ8fYATFois4j8/rgztn/Jggj/mFgCIk=,tag:W38qDd1RkCdK3bVMqOVnjA==,type:str]
|
||||
lastmodified: "2025-12-18T02:50:50Z"
|
||||
mac: ENC[AES256_GCM,data:+kfs0EDnnZNnHMf91P6rAN52lugHFO4XcNJiKLpXt7bfTSMbiwgVbvRElXGTbLXLVSz70uZyzV/mt0ZcfEfPbwE/Pdh6SmFiWwQwLT1M50MdrxAWWYvSCS9r4h1Cow3N3K2/dXH7N/4AVHTg3ohXlP92fxVh1wL0cVnke/lcQgY=,iv:M5n9+lgq0fBx5Yg1e0N6v0obbnmarvVwIHAjCr5XmM4=,tag:NBA01MtG40T3nST7b00tiw==,type:str]
|
||||
pgp:
|
||||
- created_at: "2025-12-11T23:56:15Z"
|
||||
enc: |-
|
||||
23
controllers/reflector/helm-release.yaml
Normal file
23
controllers/reflector/helm-release.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: reflector
|
||||
namespace: reflector
|
||||
spec:
|
||||
interval: 12h
|
||||
install:
|
||||
strategy:
|
||||
name: RetryOnFailure
|
||||
retryInterval: 2m
|
||||
upgrade:
|
||||
strategy:
|
||||
name: RetryOnFailure
|
||||
retryInterval: 3m
|
||||
chart:
|
||||
spec:
|
||||
chart: reflector
|
||||
version: "9.1.x"
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: reflector
|
||||
interval: 24h
|
||||
9
controllers/reflector/helm-repository.yaml
Normal file
9
controllers/reflector/helm-repository.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: reflector
|
||||
namespace: reflector
|
||||
spec:
|
||||
type: "oci"
|
||||
interval: 24h
|
||||
url: oci://ghcr.io/emberstack/helm-charts
|
||||
6
controllers/reflector/kustomization.yaml
Normal file
6
controllers/reflector/kustomization.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- helm-repository.yaml
|
||||
- helm-release.yaml
|
||||
4
controllers/reflector/namespace.yaml
Normal file
4
controllers/reflector/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: reflector
|
||||
@@ -1,17 +1,15 @@
|
||||
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||
kind: Kustomization
|
||||
metadata:
|
||||
name: barman-cloud-plugin
|
||||
name: reflector
|
||||
namespace: flux-system
|
||||
spec:
|
||||
interval: 1h
|
||||
retryInterval: 2m
|
||||
timeout: 5m
|
||||
dependsOn:
|
||||
- name: cnpg
|
||||
sourceRef:
|
||||
kind: ExternalArtifact
|
||||
name: barman-cloud-plugin
|
||||
path: .
|
||||
name: reflector
|
||||
path: ./
|
||||
prune: true
|
||||
wait: true
|
||||
Reference in New Issue
Block a user