From 882d28bc1adefcc3b9bbf998369c85f09dc18cd5 Mon Sep 17 00:00:00 2001 From: admin Date: Thu, 30 Apr 2026 12:42:05 +0200 Subject: [PATCH] feat: add pg-admin --- clusters/homelab/apps/pgadmin.yaml | 16 ++++++ clusters/homelab/apps/pgadmin/configmap.yaml | 57 +++++++++++++++++++ clusters/homelab/apps/pgadmin/deployment.yaml | 41 +++++++++++++ .../homelab/apps/pgadmin/kustomization.yaml | 10 ++++ clusters/homelab/apps/pgadmin/namespace.yaml | 4 ++ clusters/homelab/apps/pgadmin/pvc.yaml | 12 ++++ .../homelab/apps/pgadmin/secret.sops.yaml | 30 ++++++++++ clusters/homelab/apps/pgadmin/service.yaml | 11 ++++ 8 files changed, 181 insertions(+) create mode 100644 clusters/homelab/apps/pgadmin.yaml create mode 100644 clusters/homelab/apps/pgadmin/configmap.yaml create mode 100644 clusters/homelab/apps/pgadmin/deployment.yaml create mode 100644 clusters/homelab/apps/pgadmin/kustomization.yaml create mode 100644 clusters/homelab/apps/pgadmin/namespace.yaml create mode 100644 clusters/homelab/apps/pgadmin/pvc.yaml create mode 100644 clusters/homelab/apps/pgadmin/secret.sops.yaml create mode 100644 clusters/homelab/apps/pgadmin/service.yaml diff --git a/clusters/homelab/apps/pgadmin.yaml b/clusters/homelab/apps/pgadmin.yaml new file mode 100644 index 0000000..bd1d4d2 --- /dev/null +++ b/clusters/homelab/apps/pgadmin.yaml @@ -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 diff --git a/clusters/homelab/apps/pgadmin/configmap.yaml b/clusters/homelab/apps/pgadmin/configmap.yaml new file mode 100644 index 0000000..29ef609 --- /dev/null +++ b/clusters/homelab/apps/pgadmin/configmap.yaml @@ -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" + } + } + } + diff --git a/clusters/homelab/apps/pgadmin/deployment.yaml b/clusters/homelab/apps/pgadmin/deployment.yaml new file mode 100644 index 0000000..0d96538 --- /dev/null +++ b/clusters/homelab/apps/pgadmin/deployment.yaml @@ -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 diff --git a/clusters/homelab/apps/pgadmin/kustomization.yaml b/clusters/homelab/apps/pgadmin/kustomization.yaml new file mode 100644 index 0000000..59906c9 --- /dev/null +++ b/clusters/homelab/apps/pgadmin/kustomization.yaml @@ -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 diff --git a/clusters/homelab/apps/pgadmin/namespace.yaml b/clusters/homelab/apps/pgadmin/namespace.yaml new file mode 100644 index 0000000..370291f --- /dev/null +++ b/clusters/homelab/apps/pgadmin/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: pgadmin diff --git a/clusters/homelab/apps/pgadmin/pvc.yaml b/clusters/homelab/apps/pgadmin/pvc.yaml new file mode 100644 index 0000000..0d94595 --- /dev/null +++ b/clusters/homelab/apps/pgadmin/pvc.yaml @@ -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 diff --git a/clusters/homelab/apps/pgadmin/secret.sops.yaml b/clusters/homelab/apps/pgadmin/secret.sops.yaml new file mode 100644 index 0000000..1b78f2c --- /dev/null +++ b/clusters/homelab/apps/pgadmin/secret.sops.yaml @@ -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 diff --git a/clusters/homelab/apps/pgadmin/service.yaml b/clusters/homelab/apps/pgadmin/service.yaml new file mode 100644 index 0000000..8e56150 --- /dev/null +++ b/clusters/homelab/apps/pgadmin/service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: pgadmin + namespace: pgadmin +spec: + selector: + app: pgadmin + ports: + - port: 80 + targetPort: 80