feat: add pg-admin

This commit is contained in:
2026-04-30 12:42:05 +02:00
parent d7f4052935
commit 882d28bc1a
8 changed files with 181 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: pgadmin
namespace: flux-system
spec:
interval: 10m
path: ./apps/pgadmin
prune: true
sourceRef:
kind: GitRepository
name: flux-system
decryption:
provider: sops
secretRef:
name: sops-age
@@ -0,0 +1,57 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: pgadmin-config
namespace: pgadmin
data:
servers.json: |
{
"Servers": {
"1": {
"Name": "Davis",
"Group": "CNPG",
"Host": "davis-db-rw.davis.svc.cluster.local",
"Port": 5432,
"MaintenanceDB": "postgres",
"Username": "postgres",
"SSLMode": "prefer"
},
"2": {
"Name": "Forgejo",
"Group": "CNPG",
"Host": "forgejo-db-rw.forgejo.svc.cluster.local",
"Port": 5432,
"MaintenanceDB": "postgres",
"Username": "postgres",
"SSLMode": "prefer"
},
"3": {
"Name": "Garmin",
"Group": "CNPG",
"Host": "garmin-db-rw.garmin.svc.cluster.local",
"Port": 5432,
"MaintenanceDB": "postgres",
"Username": "postgres",
"SSLMode": "prefer"
},
"4": {
"Name": "Synapse",
"Group": "CNPG",
"Host": "synapse-db-rw.synapse.svc.cluster.local",
"Port": 5432,
"MaintenanceDB": "postgres",
"Username": "postgres",
"SSLMode": "prefer"
},
"5": {
"Name": "Synapse MAS",
"Group": "CNPG",
"Host": "mas-db-rw.synapse.svc.cluster.local",
"Port": 5432,
"MaintenanceDB": "postgres",
"Username": "postgres",
"SSLMode": "prefer"
}
}
}
@@ -0,0 +1,41 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: pgadmin
namespace: pgadmin
spec:
replicas: 1
selector:
matchLabels:
app: pgadmin
template:
metadata:
labels:
app: pgadmin
spec:
securityContext:
fsGroup: 5050
containers:
- name: pgadmin
image: dpage/pgadmin4:latest
ports:
- containerPort: 80
envFrom:
- secretRef:
name: pgadmin-secret
env:
- name: PGADMIN_SERVER_JSON_FILE
value: /pgadmin4/servers.json
volumeMounts:
- name: pgadmin-data
mountPath: /var/lib/pgadmin
- name: pgadmin-config
mountPath: /pgadmin4/servers.json
subPath: servers.json
volumes:
- name: pgadmin-data
persistentVolumeClaim:
claimName: pgadmin-pvc
- name: pgadmin-config
configMap:
name: pgadmin-config
@@ -0,0 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: pgadmin
resources:
- namespace.yaml
- secret.sops.yaml
- configmap.yaml
- pvc.yaml
- deployment.yaml
- service.yaml
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: pgadmin
+12
View File
@@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pgadmin-pvc
namespace: pgadmin
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn # du nutzt Longhorn laut deiner Struktur
resources:
requests:
storage: 1Gi
@@ -0,0 +1,30 @@
apiVersion: ENC[AES256_GCM,data:S6I=,iv:9kcFV2XMJVl1j8uPvyg4zDIaUa0WHLUK7jkH1ZjYWK8=,tag:w1Xz8SWN2exyt0f9lGsOdg==,type:str]
kind: ENC[AES256_GCM,data:2LHfZbCK,iv:DqMYkW+7+9Ved4hvXRBiqK1ydY5GrHTnToNLMU4Ne90=,tag:J84eLTmKxHwaC+QLX1jJrw==,type:str]
metadata:
name: ENC[AES256_GCM,data:5uP/Faegom7X2qE3fGs=,iv:Rr2l4PaiS9GDnZoT3ASRH6CGq0snnaLDHoJfAqfZItg=,tag:DgVmVgFKnz8oTdw/wgmJAw==,type:str]
namespace: ENC[AES256_GCM,data:1AZ1cHo59w==,iv:uEVIvjVXMOyd+LXelmTwuW3BcAJUY8ycYFJhB0oHK/U=,tag:uqBy8SkwTd+hwKjGm4afzQ==,type:str]
stringData:
#ENC[AES256_GCM,data:PWJdjfRj6U8k,iv:E2CGfPxRBJI0Vhr0WZ/E1dYTqItREyPl2CNUmYpIFwo=,tag:kNBAsTaWa8j4ZexqK+GlJg==,type:comment]
PGADMIN_DEFAULT_EMAIL: ENC[AES256_GCM,data:ic6a0htMv2Vc5gFaNlIKe60nLyM=,iv:BvevFffY2XW02zJf7gOT5XHFXmC7lpYU3dY9ZIZ1pWU=,tag:tDM4yDpo7wknOEeJxvkaOA==,type:str]
#ENC[AES256_GCM,data:bVMCR1ntygJ+H6dVsl0IUk53+1fccludCqPiVKU=,iv:B0/KW1EAAcukyBWvBREpkhiMiDGsJ9W4vB6/6mF+JUo=,tag:SMzHjGq4O1NCfQeyeRkQlA==,type:comment]
PGADMIN_DEFAULT_PASSWORD: ENC[AES256_GCM,data:bFMgeTFcay0=,iv:bAoWlJsfDzwnEcYQ8Yi3QPtRLQUmxe/x/4DL1nId3vY=,tag:bgAmCXMDK2rNkg8+FbW8nQ==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1rydfcalt7pu4jnmh298lgjlasxyjldyaz3xyssk7v54lpu30fv0qna96ea
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBINEJtSjJOSHZpKzk2dkFO
emhpbFp4N0F6c25EVnlZQXZTUndUaFgrZzEwCnZOZytyY2N1a2FyNnp6b01yVmVy
aklNK0p4OUNoSHF6OURlSzh6UHFpUFkKLS0tIEFWVFFNQlFQV3BPdWxqbmFlazgx
TjI4NHBMdXRUSHVBcU14eHdvVkwvdG8KJ4LblkxOzp5WlgPFLqTrEdu+qm13pdzm
wVCb2n1ormGxCE5oVdW+zI1ZrnWtZe0nKcq4WCtfnwBdsQYcarxChQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-04-30T10:35:18Z"
mac: ENC[AES256_GCM,data:KWIcP9bUuFDFQP8I35EvvY6Z5jbB5sWPBInP41UA18lLSoXCLsMxKY0cHWAVZTex0vNM3ScjsuZt28LYdugZtcHUMDMwYYAslhKQDHI4HUG3piJ5oEG5cvOiWXkpMkpN4kplKrIJPzs8njEkZics4855kbWjmc2z97IEudmk5tk=,iv:d1x1UKAPeup3Hy74H5sIUOgH/bf5LBmCkDfeElYlTAg=,tag:BTXuWcg1wubL00DqJi843A==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.9.4
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: pgadmin
namespace: pgadmin
spec:
selector:
app: pgadmin
ports:
- port: 80
targetPort: 80