From 41759380b1a7172eac94cd8d438258c6dd6048ef Mon Sep 17 00:00:00 2001 From: Willian Paixao <willian@ufpa.br> Date: Mon, 13 May 2024 16:01:13 +0200 Subject: [PATCH] install postgres --- kubernetes/apps/database/kustomization.yaml | 6 +++ kubernetes/apps/database/namespace.yaml | 8 +++ .../database/postgres/app/helmrelease.yaml | 51 +++++++++++++++++++ .../database/postgres/app/kustomization.yaml | 5 ++ .../postgres/app/postgresql-secret.sops.yaml | 31 +++++++++++ kubernetes/apps/database/postgres/ks.yaml | 21 ++++++++ .../apps/media/immich/app/helmrelease.yaml | 7 +++ .../media/immich/app/immich-secret.sops.yaml | 30 +++++++++++ .../flux/repositories/helm/bitnami.yaml | 9 ++++ .../flux/repositories/helm/kustomization.yaml | 1 + 10 files changed, 169 insertions(+) create mode 100644 kubernetes/apps/database/kustomization.yaml create mode 100644 kubernetes/apps/database/namespace.yaml create mode 100644 kubernetes/apps/database/postgres/app/helmrelease.yaml create mode 100644 kubernetes/apps/database/postgres/app/kustomization.yaml create mode 100644 kubernetes/apps/database/postgres/app/postgresql-secret.sops.yaml create mode 100644 kubernetes/apps/database/postgres/ks.yaml create mode 100644 kubernetes/apps/media/immich/app/immich-secret.sops.yaml create mode 100644 kubernetes/flux/repositories/helm/bitnami.yaml diff --git a/kubernetes/apps/database/kustomization.yaml b/kubernetes/apps/database/kustomization.yaml new file mode 100644 index 000000000..3c877742e --- /dev/null +++ b/kubernetes/apps/database/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./namespace.yaml + - ./postgres/ks.yaml diff --git a/kubernetes/apps/database/namespace.yaml b/kubernetes/apps/database/namespace.yaml new file mode 100644 index 000000000..c526a84a2 --- /dev/null +++ b/kubernetes/apps/database/namespace.yaml @@ -0,0 +1,8 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: database + labels: + kubernetes.io/metadata.name: database + kustomize.toolkit.fluxcd.io/prune: disabled diff --git a/kubernetes/apps/database/postgres/app/helmrelease.yaml b/kubernetes/apps/database/postgres/app/helmrelease.yaml new file mode 100644 index 000000000..a09312c32 --- /dev/null +++ b/kubernetes/apps/database/postgres/app/helmrelease.yaml @@ -0,0 +1,51 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2beta2 +kind: HelmRelease +metadata: + name: &app postgresql + namespace: &namespace database +spec: + interval: 30m + chart: + spec: + chart: postgresql + version: 15.2.12 + sourceRef: + kind: HelmRepository + name: bitnami + namespace: flux-system + install: + remediation: + retries: 3 + upgrade: + cleanupOnFail: true + remediation: + strategy: rollback + retries: 3 + values: + global: + postgresql: + auth: + existingSecret: postgresql-secret + database: main + image: + repository: bitnami/postgresql + tag: "16.3.0" + primary: + containerSecurityContext: + runAsUser: 0 + persistence: + enabled: true + type: persistentVolumeClaim + accessMode: ReadWriteOnce + size: 16Gi + metrics: + enabled: true + serviceMonitor: + enabled: true + backup: + enabled: true + cronjob: + storage: + storageClass: longhorn + size: 16Gi diff --git a/kubernetes/apps/database/postgres/app/kustomization.yaml b/kubernetes/apps/database/postgres/app/kustomization.yaml new file mode 100644 index 000000000..dbc604ed7 --- /dev/null +++ b/kubernetes/apps/database/postgres/app/kustomization.yaml @@ -0,0 +1,5 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - helmrelease.yaml diff --git a/kubernetes/apps/database/postgres/app/postgresql-secret.sops.yaml b/kubernetes/apps/database/postgres/app/postgresql-secret.sops.yaml new file mode 100644 index 000000000..ca7015dba --- /dev/null +++ b/kubernetes/apps/database/postgres/app/postgresql-secret.sops.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +kind: Secret +metadata: + name: postgresql-secret + namespace: database + creationTimestamp: "2024-05-13T13:57:19Z" + uid: e128cd7f-59ac-48f1-8a39-c23618239268 +type: Opaque +data: + password: ENC[AES256_GCM,data:baJEArjpxp4QcTSz/fjoaaGRbKLSogOp/RJDpFzylbiRNxrkTQITbeH6euo=,iv:OmjcsrYsECOlR/T/wVy0ABt/kjOJsfXwhhvSUeMTJm4=,tag:jTIbSoKO740UC4/ItkGkRA==,type:str] + postgres-password: ENC[AES256_GCM,data:25thpO2WeTaYYWGOQ6CImChVanfJN5p7Br9wdH4sJ92bNWJnqC/PacJdrQU=,iv:ZxLCbi8B5/LW0NgXRm2iS42VOmN8SV4PZhztUrk4IYU=,tag:HyRM8WnKt7Gh8kiZEK3KfA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age17ary36xtm566uptguuhsj7xmuqzyz06ce54tcf6p3mge2thphqfs3gln40 + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFbzkxVyt6ek5pTGQwK0Ez + ZXQrd3pRMjVnUFRCazUxaEY2K1pTRFg2bm1vCjBjYjlvVVMzSWFheDZWRnZmcGpp + cVh2UU11dXRPc3FRN2R0YVViT2pQQXMKLS0tIGVibkxlcWxXUnFQcDFmZXJmdkd1 + SStycTUxMUY3TTRNS2wrc1J3blRielEKnq+VPDIzCiYAF3TzXEF6vxuavddXB2Rv + 0ndgAfG+CnL92adpH8YOlB4V/EWxjDdHTwPR8MbgB6zxtb0FOEyjEg== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-05-13T14:25:48Z" + mac: ENC[AES256_GCM,data:zUNpn95cbNxrnyCgRoIw1PyOw4kXemMUj2Q0/LdRFt/ojyTIXx99ExVYsyNQBMuqTYfqc+XD7De6cg0BhEkBkstgDvgfKRJq/btQBsIzLWRgRUNUdPStVJx30Ylqp+qp1jyJtD5ID+uuHUy3eqIs4fbnXDueR4lolgetUNxlDCI=,iv:0ZIGOfCNaTgRc71pFf1rIv37+Z2BfuGl/SEhm55zssg=,tag:Ktq8xNxzu0UCYde/Arx7uw==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.7.3 diff --git a/kubernetes/apps/database/postgres/ks.yaml b/kubernetes/apps/database/postgres/ks.yaml new file mode 100644 index 000000000..10a039a48 --- /dev/null +++ b/kubernetes/apps/database/postgres/ks.yaml @@ -0,0 +1,21 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/kustomize.toolkit.fluxcd.io/kustomization_v1.json +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: &app postgres + namespace: flux-system +spec: + targetNamespace: database + commonMetadata: + labels: + app.kubernetes.io/name: *app + path: ./kubernetes/apps/database/postgres/app + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + wait: false + interval: 30m + retryInterval: 1m + timeout: 15m diff --git a/kubernetes/apps/media/immich/app/helmrelease.yaml b/kubernetes/apps/media/immich/app/helmrelease.yaml index b74b581fe..5980ac023 100644 --- a/kubernetes/apps/media/immich/app/helmrelease.yaml +++ b/kubernetes/apps/media/immich/app/helmrelease.yaml @@ -45,6 +45,13 @@ spec: pullPolicy: IfNotPresent command: [./start-server.sh] env: &env + DB_HOSTNAME: postgresql.database.svc.cluster.local + DB_DATABASE_NAME: immich + DB_USERNAME: immich + DB_PASSWORD: + secretKeyRef: + name: immich-secret + key: postgres-password TZ: ${TIMEZONE} securityContext: allowPrivilegeEscalation: false diff --git a/kubernetes/apps/media/immich/app/immich-secret.sops.yaml b/kubernetes/apps/media/immich/app/immich-secret.sops.yaml new file mode 100644 index 000000000..bb964c841 --- /dev/null +++ b/kubernetes/apps/media/immich/app/immich-secret.sops.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: Secret +metadata: + name: immich-secret + namespace: media + creationTimestamp: "2024-05-13T14:31:11Z" + uid: 41abc95e-b44b-4eae-9e87-bccb48ff2a46 +type: Opaque +data: + postgres-password: ENC[AES256_GCM,data:1TuQpzQ2MmE9lpz2hY/vONsBZgioVJ7HfcgAQuJKiRH8uvdPF/OY8hOGd9Q=,iv:j35UQMdN2VWBpSanWtEcsAnXrDB9NDf4HaM/5JzjbNY=,tag:HSEZ5KhpnWMCP/8tBGJ/SA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age17ary36xtm566uptguuhsj7xmuqzyz06ce54tcf6p3mge2thphqfs3gln40 + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKSXJkb1ZWaGdYZUhYTisx + T2w3cmsxcDYwWE9RNW5OVnNYM3RiRE9zaG5rClBFK0FBaWxrQ25ycVZDdDFVQi9O + dW51SC8yVmE1VGVCWFVyd1NOWDRkSU0KLS0tIGN3RFJQZlhMQUVNWFRsZCt0RFo3 + Y1pybUVpUzhDejdpNVByMUtMMlNMODQKlo+r8aYU3obAQpVZXvADuiDKoP0ZIAEd + BXEmTMwZbpq4I0fr+OzMrJCm60h7QVyXvnA79NOwbsUQXr5tQ9Xhig== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-05-13T14:32:04Z" + mac: ENC[AES256_GCM,data:x7Y0qYF472DrvL6pJAySIfbYKyUcXhS1pSWf1NeGoO3ACdq/kX3aSxV97/zwDbrshHAade73jtCnuCN73Mn1BnOsdg23sLa0U4xS/wUEf8DLfwWGUhqrR3nlLOjJ756NOtFOZt0H0hL2zA04+I4Vrmn9gqQtHqAXWaHBRoS1QDk=,iv:stUHRLer1H3eeOc4s+k63UkIzzM1bNMS8tazZe6x/Nk=,tag:3sS1Z+KFWyPh/GobVtsFmA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.7.3 diff --git a/kubernetes/flux/repositories/helm/bitnami.yaml b/kubernetes/flux/repositories/helm/bitnami.yaml new file mode 100644 index 000000000..deac3b981 --- /dev/null +++ b/kubernetes/flux/repositories/helm/bitnami.yaml @@ -0,0 +1,9 @@ +--- +apiVersion: source.toolkit.fluxcd.io/v1beta2 +kind: HelmRepository +metadata: + name: bitnami + namespace: flux-system +spec: + interval: 1h + url: https://charts.bitnami.com/bitnami diff --git a/kubernetes/flux/repositories/helm/kustomization.yaml b/kubernetes/flux/repositories/helm/kustomization.yaml index b8e251713..768d492df 100644 --- a/kubernetes/flux/repositories/helm/kustomization.yaml +++ b/kubernetes/flux/repositories/helm/kustomization.yaml @@ -2,6 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: + - ./bitnami.yaml - ./bjw-s.yaml - ./cilium.yaml - ./external-dns.yaml