From d6d6a1f161123268aa3e73dfed089b75bdf4f3e8 Mon Sep 17 00:00:00 2001
From: Sheogorath <sheogorath@shivering-isles.com>
Date: Mon, 24 Apr 2023 01:15:09 +0200
Subject: [PATCH] feat(hedgedoc): Move Hedgedoc to Kubernetes

---
 apps/base/hedgedoc/ca.yaml                    |  26 ++++
 apps/base/hedgedoc/database.yaml              |  18 +++
 apps/base/hedgedoc/kustomization.yaml         |  15 ++
 apps/base/hedgedoc/monitoring.yaml            |  14 ++
 apps/base/hedgedoc/namespace.yaml             |  31 ++++
 apps/base/hedgedoc/networkpolicy.yaml         |  18 +++
 apps/base/hedgedoc/release.yaml               |  65 ++++++++
 apps/k8s01/hedgedoc/certificate.yaml          |  64 ++++++++
 apps/k8s01/hedgedoc/database-override.yaml    |   9 ++
 apps/k8s01/hedgedoc/hedgedoc-values.yaml      |  60 ++++++++
 apps/k8s01/hedgedoc/kustomization.yaml        |  11 ++
 apps/k8s01/hedgedoc/slo.yaml                  |  21 +++
 charts/hedgedoc/.helmignore                   |  23 +++
 charts/hedgedoc/Chart.lock                    |   6 +
 charts/hedgedoc/Chart.yaml                    |  24 +++
 charts/hedgedoc/charts/postgresql-11.9.13.tgz | Bin 0 -> 57389 bytes
 charts/hedgedoc/templates/NOTES.txt           |  22 +++
 charts/hedgedoc/templates/_helpers.tpl        |  79 ++++++++++
 charts/hedgedoc/templates/configmap.yaml      |  81 ++++++++++
 charts/hedgedoc/templates/deployment.yaml     |  70 +++++++++
 charts/hedgedoc/templates/ingress.yaml        |  61 ++++++++
 charts/hedgedoc/templates/secret.yaml         |  26 ++++
 charts/hedgedoc/templates/service.yaml        |  15 ++
 charts/hedgedoc/templates/serviceaccount.yaml |  12 ++
 .../templates/tests/test-connection.yaml      |  15 ++
 .../tests/80_subchart_postgresql_test.yaml    | 111 ++++++++++++++
 charts/hedgedoc/tests/98_snapshot_test.yaml   |  24 +++
 .../__snapshot__/98_snapshot_test.yaml.snap   | 144 ++++++++++++++++++
 charts/hedgedoc/tests/mocks/test.yaml         |   2 +
 charts/hedgedoc/values.yaml                   | 110 +++++++++++++
 30 files changed, 1177 insertions(+)
 create mode 100644 apps/base/hedgedoc/ca.yaml
 create mode 100644 apps/base/hedgedoc/database.yaml
 create mode 100644 apps/base/hedgedoc/kustomization.yaml
 create mode 100644 apps/base/hedgedoc/monitoring.yaml
 create mode 100644 apps/base/hedgedoc/namespace.yaml
 create mode 100644 apps/base/hedgedoc/networkpolicy.yaml
 create mode 100644 apps/base/hedgedoc/release.yaml
 create mode 100644 apps/k8s01/hedgedoc/certificate.yaml
 create mode 100644 apps/k8s01/hedgedoc/database-override.yaml
 create mode 100644 apps/k8s01/hedgedoc/hedgedoc-values.yaml
 create mode 100644 apps/k8s01/hedgedoc/kustomization.yaml
 create mode 100644 apps/k8s01/hedgedoc/slo.yaml
 create mode 100644 charts/hedgedoc/.helmignore
 create mode 100644 charts/hedgedoc/Chart.lock
 create mode 100644 charts/hedgedoc/Chart.yaml
 create mode 100644 charts/hedgedoc/charts/postgresql-11.9.13.tgz
 create mode 100644 charts/hedgedoc/templates/NOTES.txt
 create mode 100644 charts/hedgedoc/templates/_helpers.tpl
 create mode 100644 charts/hedgedoc/templates/configmap.yaml
 create mode 100644 charts/hedgedoc/templates/deployment.yaml
 create mode 100644 charts/hedgedoc/templates/ingress.yaml
 create mode 100644 charts/hedgedoc/templates/secret.yaml
 create mode 100644 charts/hedgedoc/templates/service.yaml
 create mode 100644 charts/hedgedoc/templates/serviceaccount.yaml
 create mode 100644 charts/hedgedoc/templates/tests/test-connection.yaml
 create mode 100644 charts/hedgedoc/tests/80_subchart_postgresql_test.yaml
 create mode 100644 charts/hedgedoc/tests/98_snapshot_test.yaml
 create mode 100644 charts/hedgedoc/tests/__snapshot__/98_snapshot_test.yaml.snap
 create mode 100644 charts/hedgedoc/tests/mocks/test.yaml
 create mode 100644 charts/hedgedoc/values.yaml

diff --git a/apps/base/hedgedoc/ca.yaml b/apps/base/hedgedoc/ca.yaml
new file mode 100644
index 000000000..919958c4d
--- /dev/null
+++ b/apps/base/hedgedoc/ca.yaml
@@ -0,0 +1,26 @@
+---
+apiVersion: cert-manager.io/v1
+kind: Certificate
+metadata:
+  name: namespace-ca
+  namespace: hedgedoc
+spec:
+  isCA: true
+  commonName: namespace-ca
+  secretName: namespace-ca
+  privateKey:
+    algorithm: ECDSA
+    size: 256
+  issuerRef:
+    name: selfsigned-cluster-issuer
+    kind: ClusterIssuer
+    group: cert-manager.io
+---
+apiVersion: cert-manager.io/v1
+kind: Issuer
+metadata:
+  name: namespace-ca-issuer
+  namespace: hedgedoc
+spec:
+  ca:
+    secretName: namespace-ca
diff --git a/apps/base/hedgedoc/database.yaml b/apps/base/hedgedoc/database.yaml
new file mode 100644
index 000000000..c424fdec0
--- /dev/null
+++ b/apps/base/hedgedoc/database.yaml
@@ -0,0 +1,18 @@
+apiVersion: "acid.zalan.do/v1"
+kind: postgresql
+metadata:
+  name: hedgedoc-postgres
+  namespace: hedgedoc
+spec:
+  teamId: "hedgedoc"
+  volume:
+    size: 1Gi
+  numberOfInstances: 1
+  users:
+    hedgedoc:
+    - superuser
+    - createdb
+  databases:
+    hedgedoc: hedgedoc
+  postgresql:
+    version: "14"
diff --git a/apps/base/hedgedoc/kustomization.yaml b/apps/base/hedgedoc/kustomization.yaml
new file mode 100644
index 000000000..64f890bab
--- /dev/null
+++ b/apps/base/hedgedoc/kustomization.yaml
@@ -0,0 +1,15 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+namespace: hedgedoc
+resources:
+  - namespace.yaml
+  - ca.yaml
+  - database.yaml
+  - release.yaml
+  - monitoring.yaml
+  - ../../../shared/networkpolicies/allow-from-same-namespace.yaml
+  - ../../../shared/networkpolicies/allow-from-ingress.yaml
+  - ../../../shared/networkpolicies/allow-from-database.yaml
+  - ../../../shared/networkpolicies/allow-from-monitoring.yaml
+patchesStrategicMerge:
+  - networkpolicy.yaml
diff --git a/apps/base/hedgedoc/monitoring.yaml b/apps/base/hedgedoc/monitoring.yaml
new file mode 100644
index 000000000..4ac0217ac
--- /dev/null
+++ b/apps/base/hedgedoc/monitoring.yaml
@@ -0,0 +1,14 @@
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: hedgedoc
+  namespace: hedgedoc
+spec:
+  endpoints:
+  - honorLabels: true
+    port: http
+  jobLabel: app.kubernetes.io/name
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: hedgedoc
+      app.kubernetes.io/name: hedgedoc
diff --git a/apps/base/hedgedoc/namespace.yaml b/apps/base/hedgedoc/namespace.yaml
new file mode 100644
index 000000000..757afa82b
--- /dev/null
+++ b/apps/base/hedgedoc/namespace.yaml
@@ -0,0 +1,31 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: hedgedoc
+  labels:
+    pod-security.kubernetes.io/audit: restricted
+    pod-security.kubernetes.io/enforce: baseline
+    pod-security.kubernetes.io/warn: restricted
+    pod-security.kubernetes.io/audit-version: v1.23
+    pod-security.kubernetes.io/enforce-version: v1.23
+    pod-security.kubernetes.io/warn-version: v1.23
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: flux-reconciler
+  namespace: hedgedoc
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+  name: flux-reconciler
+  namespace: hedgedoc
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: admin
+subjects:
+  - kind: ServiceAccount
+    name: flux-reconciler
+    namespace: hedgedoc
diff --git a/apps/base/hedgedoc/networkpolicy.yaml b/apps/base/hedgedoc/networkpolicy.yaml
new file mode 100644
index 000000000..e1d0f09a8
--- /dev/null
+++ b/apps/base/hedgedoc/networkpolicy.yaml
@@ -0,0 +1,18 @@
+---
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+  name: allow-from-ingress
+spec:
+  podSelector:
+    matchLabels:
+      app.kubernetes.io/name: hedgedoc
+---
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+  name: allow-from-monitoring
+spec:
+  podSelector:
+    matchLabels:
+      app.kubernetes.io/name: hedgedoc
diff --git a/apps/base/hedgedoc/release.yaml b/apps/base/hedgedoc/release.yaml
new file mode 100644
index 000000000..192708f22
--- /dev/null
+++ b/apps/base/hedgedoc/release.yaml
@@ -0,0 +1,65 @@
+apiVersion: helm.toolkit.fluxcd.io/v2beta1
+kind: HelmRelease
+metadata:
+  name: hedgedoc
+  namespace: hedgedoc
+spec:
+  serviceAccountName: flux-reconciler
+  timeout: 5m
+  releaseName: hedgedoc
+  chart:
+    spec:
+      chart: ./charts/hedgedoc
+      sourceRef:
+        kind: GitRepository
+        name: flux-system
+        namespace: flux-system
+  interval: 5m
+  valuesFrom:
+    - kind: ConfigMap
+      name: hedgedoc-base-values
+      valuesKey: values.yaml
+    - kind: Secret
+      name: hedgedoc-override-values
+      valuesKey: values-overrides.yaml
+      optional: true
+    - kind: Secret
+      name: hedgedoc.hedgedoc-postgres.credentials.postgresql.acid.zalan.do
+      valuesKey: username
+      targetPath: postgresql.auth.username
+      optional: false
+    - kind: Secret
+      name: hedgedoc.hedgedoc-postgres.credentials.postgresql.acid.zalan.do
+      valuesKey: password
+      targetPath: postgresql.auth.password
+      optional: false
+  install:
+    remediation:
+      retries: -1
+  upgrade:
+    remediation:
+      retries: -1
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: hedgedoc-base-values
+  namespace: hedgedoc
+data:
+  values.yaml: |
+    postgresql:
+      enabled: true
+      postgresqlHostname: hedgedoc-postgres.hedgedoc.svc.cluster.local
+      auth:
+        database: hedgedoc
+    resources:
+      limits:
+        cpu: "1"
+        memory: 512Mi
+      requests:
+        cpu: 100m
+        memory: 512Mi
+    podSecurityContext:
+      runAsUser: "10000"
+      runAsGroup: "10000"
+      runAsNonRoot: true
diff --git a/apps/k8s01/hedgedoc/certificate.yaml b/apps/k8s01/hedgedoc/certificate.yaml
new file mode 100644
index 000000000..14b9590c7
--- /dev/null
+++ b/apps/k8s01/hedgedoc/certificate.yaml
@@ -0,0 +1,64 @@
+apiVersion: cert-manager.io/v1
+kind: Certificate
+metadata:
+    name: hedgedoc-tls
+    namespace: hedgedoc
+spec:
+    dnsNames:
+        - ENC[AES256_GCM,data:lCKhFI5WZgGsMkzhfxTJ2M8eQ+Jddd0=,iv:WVw1UFH0x2v7II9bZY1nZt07rtkcP161Tk9XVWma528=,tag:44WbQUbBtjAK1RwU8gKuug==,type:str]
+    issuerRef:
+        name: letsencrypt
+        kind: ClusterIssuer
+    secretName: ingress-hedgedoc-tls
+sops:
+    kms: []
+    gcp_kms: []
+    azure_kv: []
+    hc_vault: []
+    age: []
+    lastmodified: "2023-04-23T22:42:19Z"
+    mac: ENC[AES256_GCM,data:mEp73QGrUnBahXkrM5UPMtGbGDRl3LE4drZs56T81xpf4jqiqI8cIvGwZIJxqTsZcJT0vNbgxz2IulTgizyM1O5p24+Z3ZzrDZ05Zhgbu9HNZ0CSaOpfHZDEJuIUm5TQwsvlh89F7pNErXu3d3dxrLtuU6kX87ywZoWPpvd2k3w=,iv:ASRDctACn+PH49Xqb7O7FXK9Pg36BHqHX8A5/01Vubk=,tag:DALMxmcxUs6nYgmTXPOThw==,type:str]
+    pgp:
+        - created_at: "2022-01-21T18:13:48Z"
+          enc: |-
+            -----BEGIN PGP MESSAGE-----
+
+            wcFMA7kpg2bgzVHcARAAHhDshl1OJqNRUolNvbIXzOuDzssJnvyi6cIZuMmVMsxf
+            a6wAWAtYOehvtn1ODL7/h4fIpBtfp7d8VuwfJSrh3ghUeiOl3zRzQbmaFA2L5/iG
+            Jd94tFAVwIl30qjcYqGVB2RF27VF1RElzgDLQh3hiXn1hDC+WmNSnBF5hwnwCFOL
+            wM4BHuE2AB4TX3PlYSo1n71VSzcCqRzbIxelZasYLnJQVL0VE6AjEd/fHS468R8N
+            aZ3mhmHW3sWzuLHNREMD2Q3ghkguLhau0VoETlYRI9103I4k7/khFrhAj5l2/PUr
+            2SWgpXyRqXVaKPeTiQs3QR8B5jNq3BlZj6Celw5Ig/wx3LY0EhI9e9WFgtSlZxM+
+            2yk65HQGvTIgsbys/z/0skA9vqik9csFRsH9iK42E/+XLvoAT6yxyl0cv1kBEyAS
+            ggPmKOq8+CT+voHzuh8kZHq9Sa8kH5xL1DQLzX2yIruV3OhTPSK+VlDpjUbycmI2
+            qR1oCo/snOJwwwvfl9vu0B8FCwhrz8554ZQBErFfJl6GFiUV8LElRlZh5S9Jiysr
+            nYJS5gxrcvjF/0Y6EHEfWDRDxvCHoWQpWhl2hRkh5UlQKH0ab+QWLYpISyNJxjfl
+            orQJdaVX3BQwhqMLwiMLGoaNGrSpmxXveLOZmsdK0obXC67lyE6ZM/Wy6gx2dFnS
+            5gFdXCLzQmmjYK8gIlsejQdnxZI2qWavZIN9T70OZQGaDE/S+U1uxKjuGBM7HTcP
+            7f1nUa6z96A9ydWs1xHjtm7k172V16PMSrvjQ8KLhFJd9eJDq3ksAA==
+            =XgF6
+            -----END PGP MESSAGE-----
+          fp: 286791FB6648539775DB31B8FCB98C2A3EC6F601
+        - created_at: "2022-01-21T18:13:48Z"
+          enc: |
+            -----BEGIN PGP MESSAGE-----
+
+            hQIMA4oYbIHZIrAPAQ//S/9rOkbd3beNH20dxgZ7VuZxgnjiV3Hd3om717njcMm2
+            kCfTJ3AmpLtQsT2s1W221tIyCwtHOobj82ANP9KzNi4e6v3LlNTIVHTQiHXk9KJP
+            AX6JoCOLu3bAI0xcdApNBU2wAlHBVC+T4BUfhPqD5AdHpW++e1qUIsM/6TViunHj
+            BWoIA0bpXqyOhTm1GbkJrHMgczJn2qgR5lBf8wgGmASd8jlNyfA7SxoKHj8sl/Ji
+            nucP/90dmyD2eBIJYdYS3anJYa2uP96oioG5xxIyfppnL5dwozDAit3Z5vvnBZNb
+            1rrpUnN8H0cCcaj7tmDEmjGfjGwxLKegQRZX7Pg5hwaaOOPGheXf8Ip/DpDf6T0n
+            Sq24X6DC5gD1RBU+YY6ZayMt/OKpVVVwRlY4BTDIUe4M+ecK/fve5vpDW2M+KWMc
+            pOkO1B09/prsX0w5XjFh8hb/6HlDDhomiB+BszcRCUDzocRzSEIFwMf7/iTaExe8
+            2fKCCHB4kHo6GHpydlQOpnGMOvDmiNKopXxTkFQUFQjyRmHGXf/u79JNXBjHkniv
+            ZiokjTEarwMp68dyiaL4L/5Uk+4NG3MetobqSaeW2TbeBwif3G2eFleYscz7QPIR
+            5ZBBhU/CoUEz2Xge6t8rlp8PNcQ1yq/R+tZjaeqIIT4++ZxCErhA0lsxyFrgLefU
+            aAEJAhD7hR3IMDGN2zOZSiw1IBz9P8Jss/oERQiuVpe/eTv5Vqj9vuL+koKftwnF
+            vSVkNo0fLwNLtnU659Mkoj9utoUL9tAhcCMpP3NehKkBG5RjF9crnIP6zT3lvVU0
+            GYyW4Lsfrt/a
+            =FfV+
+            -----END PGP MESSAGE-----
+          fp: B137EE1549DFAF960DD1E2B15147025FB9F09E07
+    encrypted_regex: ^(data|stringData|email|dnsZones?|dnsNames?|hosts?|tang|externalURL)$
+    version: 3.7.3
diff --git a/apps/k8s01/hedgedoc/database-override.yaml b/apps/k8s01/hedgedoc/database-override.yaml
new file mode 100644
index 000000000..c6e573cc2
--- /dev/null
+++ b/apps/k8s01/hedgedoc/database-override.yaml
@@ -0,0 +1,9 @@
+apiVersion: "acid.zalan.do/v1"
+kind: postgresql
+metadata:
+  name: hedgedoc-postgres
+  namespace: hedgedoc
+spec:
+  numberOfInstances: 2
+  volume:
+    size: 5Gi
diff --git a/apps/k8s01/hedgedoc/hedgedoc-values.yaml b/apps/k8s01/hedgedoc/hedgedoc-values.yaml
new file mode 100644
index 000000000..6a5adbeda
--- /dev/null
+++ b/apps/k8s01/hedgedoc/hedgedoc-values.yaml
@@ -0,0 +1,60 @@
+apiVersion: v1
+kind: Secret
+metadata:
+    name: hedgedoc-override-values
+    namespace: hedgedoc
+type: Opaque
+stringData:
+    values-overrides.yaml: ENC[AES256_GCM,data:pFsh2X6nivnIPPrkFk9juoVenBnF1scm003iHsZmrNw+1bQW8uNZWLBEAtYC/fJ/B9B5SnQ0+Ja50P8MfuXMkxad4+4Sawbu4dJ5qK1oCEEjy9ol8lqPlgZjE07g67jMo11A9Doo80BJLElWpZQWRyhtnywGgZTrBCBCLukZbSnAm0hwpKJ5dckDVmL8A/kfufRxEFcfundPf9rk6xFUH2frBAil5tZqfYd3CSgVZHA1MHH9stOW4tN08UXCoyHGdP4ZHpFj/ChRZ99KyapetF5vItj8CMvWmvaRmkMLc5i3hkLiWF0Zfrp4qFL9F1KQhmXX0m0C9i4QHLW1QN2tXiS8WccxuMhxHLFW0TMcKdSvolZDioyObUMwAAyoGTE1BAwBb18Vtk8O9GXC0TKy0Df53XRoJh89r914D5fRlmUTqbdqW9bTdoJApYMmdhva0PrNJknmcjjAkCH0FN2iwV0N3MuXChXulYxd4ye24IvQGOh2Hen+IjxCbkFY5tpbQoQ4C9wzoD183LL1oepNYLUkOA4v5x1dUf8OxaGNQdfn6LIMXxnaFKrSrdOJxgY7fwIrhqjOinu4vlIXguiMtY4WTQXjjccTg23zT1HD8z17LmyfANjXH2ljA4jH4fky1SzizspRADKpc7k6nqyiAl6BHBDJFJrdwQ3ERJYiEKnOlef/jv9bncfcP6R776mCCnlwmjM4Pgt/FytWn3i09jviRIRQ25u6Jxv3TM8m2/k2pOBr9sc0P+M94xvR2J3gvSm3xTqEFhQcSswjjCQ5M97sCqBkbT+CacY0CpyawTSbFeeBngBU0bh/aXsghFmcc0KawvkSzZwTTSvQL495kfuL8i07Agh8ZAuk7PPx37JabRVJ8CMIYs6kOQfRsTG0c1yzgboFcsH2dlAVN9GhdI+A2E3WAvk6dPrfpDwZqYgzkdntWVW92fkj2lulxazxnrSdLuu76eQTtPbGMjePjOD3NgLS9hwdFd/A/iAkQ5pJqCUXa25gZYxYm7ji4hUw+t2eJedmlErLQPIZcophAPkj8a3tx5BGIuj2ehtqMVdSVWhBBRiVgWquOT/I7cj22cksdOwRtNLyyVaxb++fy3mKI3JVICFgPaUcfpfH1ByhcAUbCduzzIOMykUb5lhIvqmqzZ6OZjA3rG7LqnMTU7iPqezgu4uNd/Lcuy9+MMCMH5J1bhA8bffCDyg+r6Cd2rEpU7eczOZoo+Q2lnVLWmgxj8KLJZ7VxU5C5ItMeOkuljTpQzXyDKeQ61HlU0tTZKiMBbM9hq2V9LmgQwkwBqBNcDf+6Z6w+meH77mLUXDPIyE4X11wWmrH4+tT5V1R+014hZwuC3Zpm+fUH/STMiAz10m1mCQvgaMZ9ZqwarutLHl2Yno+QyduchwiAgDlYEL8aoWMqmfWVSp2fuPYvuxOG5AxUjiJ8ZCc+OZHrS3zj8ysrWElj+f7qgeYbINbIQ2ctpV/yrYOxuOKqzxsHJ26zwWYhAvO7goPztPT4ZU58oj+IA1l7EaYdiy5tK7UvSHPxnNUQINdTT7AsHi1xwsVL+TyHAbSRZ4mZNARn4mr9BHC41+xgZfNrY48L5McYUSZAXPbN3HcvXi821cVc9o0pXf1X8yE36PSZY45iKTsG5tHcqxfXHAm62aBngKmwrl6D3BaDq8iauX4k/PMyVgq6qt0r247MAlcvu1nwgFfdugHLPNitmbIyZOTCk9nl84dQX1Ps5Rabr5ZQitB1sSd9mPttX6HvbIsTzRHxTIKUW/KHHtIpR99YwK50w+czKrnTBlmw/soTunzdVByso88mAB94+ebIlFhtYVHz6myGxI/GqJFbFep/NYdWtLvclAttr7TIlPdQljQXyZ8Y7MBOXQu5IGyNdxv0k+/,iv:3w5d5fXhEeXUjTCU8TFnA0EzdEo8p7VtqxuR5HL8tSo=,tag:FZFOjEx3HPPtfqx+zc4gNw==,type:str]
+sops:
+    kms: []
+    gcp_kms: []
+    azure_kv: []
+    hc_vault: []
+    age: []
+    lastmodified: "2023-04-23T23:14:45Z"
+    mac: ENC[AES256_GCM,data:M5EVgZy0v2QGRlggG3HoQjoo8PrzG3iLv+TySSYg75cyUXY5aYUL1QyetU/A0vilvbOq7oxH74K51QG/KkIFY7IRqAfaDqj69Cs1GV2YUqOtQxkLz3H7dm9X6nXGtDEmIj/J7PM1uYw5CTJt+JaxHytYDkhPSld5aakRb9qffMw=,iv:+HXfFQHw0PzSR2P0uE8mKSnjPWFg5bFK77tvB8MtWnE=,tag:OZlPDi4DOFjoJRQgPd0nXQ==,type:str]
+    pgp:
+        - created_at: "2022-03-22T22:26:35Z"
+          enc: |-
+            -----BEGIN PGP MESSAGE-----
+
+            wcFMA7kpg2bgzVHcARAApcdDAfEgx93xGtkm4f7xTuRhvUyl8lw85rIHbWcAveYU
+            ayU88OLaoQyeZDZkOXbtxMHpry8GbId6vPAJ7KflT2eMP0A4uQGSSCQO6+5QcaYg
+            sbO/zT4vdprN7icLbvmmoK2Dh+hOo5Z7/7YGmdJfaaATzT2BGL/cVS1bonI83vXR
+            lzlW/DglIe7oNEKGVT5vWR5uGvq/dJwSRe/34eutEnJuV30imxHOcpxy3uXJFFXJ
+            3eKTk8dNLz3UE3IeUjbFdPFZYU+grOAOOCZRK0IOYFn+SF7E3dewgiwEdaXzz3gK
+            /6aEMEmf5vyVqn9jOaqZhKRqE7tW5HnhwIIlxcMPhkLVZvYf4F2EDA5f12C2hdp0
+            s7fFhU7v5GgFaHMJuaWVPxDnWTrNIst9bgeJv/N4RVfrLifrZJcqa9lE8ou0iCr5
+            dLi9d6UjsgWAREIViz+Uz7dJQ9QeJ6PGYgg/xgf0ihJFG7sx+TBG58DKb3G3tyUV
+            8hfK8Ou9m+zYnd13mJ2mV3rY0rmXusT+NcqTG2G4bBG5NimGpJS3rO7tAjjp/8sN
+            hMM46ay0vVTUXx1FwmjUFDG1e4sc7fKxTaCBizMjeUfZpAOiy/10YQmrFHBsftpo
+            K5j0nFMoG9NeO+2ffEmLhRtxvMe3WpINk7du3F624rYIGCB0aNUP69FCeJKuUQHS
+            5gH5AwnxOAtQakDksfLxJhUG1NlaS0iAFkZkTTibvOJwsY9L/scDDQlseb5zBKaZ
+            sOPwmn6hL4KavxF9BPG33ILkZKbkcvlaTlAMMY3iBs+MZeIB4+i/AA==
+            =SQqg
+            -----END PGP MESSAGE-----
+          fp: 286791FB6648539775DB31B8FCB98C2A3EC6F601
+        - created_at: "2022-03-22T22:26:35Z"
+          enc: |
+            -----BEGIN PGP MESSAGE-----
+
+            hQIMA4oYbIHZIrAPAQ//fGGoDT5KfsG/o6r5xhDHSc0IFH6zT2TFIB6TuA5SwHfV
+            8t3IeKD0bE//4f8AxGAVocw+AetolwrQL/Tl+n0UV9P44Jeh5VlCAGltHcowR53o
+            zdjS3+i9K3OOvQFhF+aYrPcnc+aTn9KbptHCam0w+Lr2UkYSAPAZHsBcoMp24mHX
+            6A+5kP1kaRzFzEn4TCNeTt13W1AsJIoSagkBWfYRBkRPk1OzGOuYqX6yeqj7a0kM
+            8uiloTQgWOiBSOyRtxUJi87CTrMXyb0F2E9HMyhgRnzF0YX0ZU0UVG8MNdRL8eFD
+            WYY68OK7DQw3zlJubscYQ2jltxKcq5g9qUCw/sXaNurtohIx9UeaHtfp036EMb22
+            5StgGEnBirUzfSrQGT3kuj20lcMtQAr/d1UsmQNjB36eOZSrx0m80pO8JVYL62/O
+            HLYnAHU52aAPtE7brNEVg4yRLCbWyVY3Z3H9OaTVXwNIMFoMEgkHHnNlsb+1ZnhV
+            cStKMO3H6W8eXQi3VGIVNhuC1ltsxHQL1I22Kr41JEnuaB9Jy5bsEbrO4XGyDdte
+            hMI8Gx+0KZAMlKuZKLS6sMa4oVnQTy8w20PtVrrS0zDrQRPpxBrOgzjrNeMj9FpS
+            q/efiCAOBc8eVd8N/7j66UItwrysfmIfsHWfoPotS7F6WmUHeAyoWjfcvTZyd4bU
+            ZgEJAhAtdCnHNvUSl5O9XZuSu51pRwj+O72kZXRSJWv7GTT9dsRfuM5Dy9A/tuVI
+            BuZraI4JyAWb2KbkM6onp3Rh9IcLuzqEYm/ETktxTtO1HlcVPJ2NMcFgTCzaIGX9
+            +rtkG7tPbA==
+            =tvBa
+            -----END PGP MESSAGE-----
+          fp: B137EE1549DFAF960DD1E2B15147025FB9F09E07
+    encrypted_regex: ^(data|stringData|email|dnsZones?|dnsNames?|hosts?|tang|externalURL|.*-secret|.*-url|.*Secrets?|.*-domain|password|subjects|node|apiURL|.*(S|s)erverNames?|.*SecretKey)$
+    version: 3.7.3
diff --git a/apps/k8s01/hedgedoc/kustomization.yaml b/apps/k8s01/hedgedoc/kustomization.yaml
new file mode 100644
index 000000000..587ab8c3e
--- /dev/null
+++ b/apps/k8s01/hedgedoc/kustomization.yaml
@@ -0,0 +1,11 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+namespace: hedgedoc
+resources:
+  - ../../base/hedgedoc
+  - certificate.yaml
+  - hedgedoc-values.yaml
+  - slo.yaml
+  - ../../../shared/resourcequotas/default.yaml
+patchesStrategicMerge:
+  - database-override.yaml
diff --git a/apps/k8s01/hedgedoc/slo.yaml b/apps/k8s01/hedgedoc/slo.yaml
new file mode 100644
index 000000000..bbd016a34
--- /dev/null
+++ b/apps/k8s01/hedgedoc/slo.yaml
@@ -0,0 +1,21 @@
+apiVersion: sloth.slok.dev/v1
+kind: PrometheusServiceLevel
+metadata:
+  name: requests-hedgedoc
+  namespace: hedgedoc
+spec:
+  service: "hedgedoc"
+  slos:
+    - name: "requests-availability"
+      objective: 98
+      description: "Hedgedoc SLO based on availability for HTTP request responses."
+      sli:
+        events:
+          errorQuery: sum(rate(nginx_ingress_controller_requests{exported_namespace="nextcloud",ingress="nextcloud",status=~"(5..|429)"}[{{.window}}]))
+          totalQuery: sum(rate(nginx_ingress_controller_requests{exported_namespace="nextcloud",ingress="nextcloud"}[{{.window}}])) > 0 OR vector(1)
+      alerting:
+        name: NextcloudHighErrorRate
+        labels:
+          category: "availability"
+        annotations:
+          summary: "High error rate on 'nextcloud' requests responses"
diff --git a/charts/hedgedoc/.helmignore b/charts/hedgedoc/.helmignore
new file mode 100644
index 000000000..0e8a0eb36
--- /dev/null
+++ b/charts/hedgedoc/.helmignore
@@ -0,0 +1,23 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*.orig
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/charts/hedgedoc/Chart.lock b/charts/hedgedoc/Chart.lock
new file mode 100644
index 000000000..f3c7009f6
--- /dev/null
+++ b/charts/hedgedoc/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: postgresql
+  repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
+  version: 11.9.13
+digest: sha256:00f9aa4e28ee58f51a9c56fe6d07219babc24ae34571815e64b388f094c4de9e
+generated: "2023-03-19T19:38:00.244092372Z"
diff --git a/charts/hedgedoc/Chart.yaml b/charts/hedgedoc/Chart.yaml
new file mode 100644
index 000000000..4d6639e88
--- /dev/null
+++ b/charts/hedgedoc/Chart.yaml
@@ -0,0 +1,24 @@
+apiVersion: v2
+name: hedgedoc
+description: A platform to write and share markdown.
+home: https://hedgedoc.org
+icon: https://avatars.githubusercontent.com/u/67865462
+type: application
+keywords:
+    - hedgedoc
+    - markdown
+    - collaboration
+sources:
+    - https://github.com/hedgedoc/hedgedoc/tree/master
+    - https://git.shivering-isles.com/shivering-isles/infrastructure-gitops/-/tree/main/charts/hedgedoc
+version: 0.1.0
+# renovate: image=quay.io/hedgedoc/hedgedoc
+appVersion: 1.9.7
+maintainers:
+- name: Sheogorath
+  url: https://shivering-isles.com
+dependencies:
+  - name: postgresql
+    version: 11.9.13
+    repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
+    condition: postgresql.enabled
\ No newline at end of file
diff --git a/charts/hedgedoc/charts/postgresql-11.9.13.tgz b/charts/hedgedoc/charts/postgresql-11.9.13.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..2d3ac623a5860d4fcc1255afb5c9ca7c4d9d05e1
GIT binary patch
literal 57389
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
K;&UeeS_S|-G#SJI

literal 0
HcmV?d00001

diff --git a/charts/hedgedoc/templates/NOTES.txt b/charts/hedgedoc/templates/NOTES.txt
new file mode 100644
index 000000000..0f1572f96
--- /dev/null
+++ b/charts/hedgedoc/templates/NOTES.txt
@@ -0,0 +1,22 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range $host := .Values.ingress.hosts }}
+  {{- range .paths }}
+  http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
+  {{- end }}
+{{- end }}
+{{- else if contains "NodePort" .Values.service.type }}
+  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "hedgedoc.fullname" . }})
+  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
+  echo http://$NODE_IP:$NODE_PORT
+{{- else if contains "LoadBalancer" .Values.service.type }}
+     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+           You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "hedgedoc.fullname" . }}'
+  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "hedgedoc.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
+  echo http://$SERVICE_IP:{{ .Values.service.port }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "hedgedoc.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+  export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
+  echo "Visit http://127.0.0.1:8080 to use your application"
+  kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
+{{- end }}
diff --git a/charts/hedgedoc/templates/_helpers.tpl b/charts/hedgedoc/templates/_helpers.tpl
new file mode 100644
index 000000000..f2c532d11
--- /dev/null
+++ b/charts/hedgedoc/templates/_helpers.tpl
@@ -0,0 +1,79 @@
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "hedgedoc.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "hedgedoc.fullname" -}}
+{{- if .Values.fullnameOverride }}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $name := default .Chart.Name .Values.nameOverride }}
+{{- if contains $name .Release.Name }}
+{{- .Release.Name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "hedgedoc.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Common labels
+*/}}
+{{- define "hedgedoc.labels" -}}
+helm.sh/chart: {{ include "hedgedoc.chart" . }}
+{{ include "hedgedoc.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end }}
+
+{{/*
+Selector labels
+*/}}
+{{- define "hedgedoc.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "hedgedoc.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end }}
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "hedgedoc.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create }}
+{{- default (include "hedgedoc.fullname" .) .Values.serviceAccount.name }}
+{{- else }}
+{{- default "default" .Values.serviceAccount.name }}
+{{- end }}
+{{- end }}
+
+{{/*
+Get the postgresql secret.
+*/}}
+{{- define "hedgedoc.postgresql.secretName" -}}
+{{- if (and (or .Values.postgresql.enabled .Values.postgresql.postgresqlHostname) .Values.postgresql.auth.existingSecret) }}
+    {{- printf "%s" (tpl .Values.postgresql.auth.existingSecret $) -}}
+{{- else if .Values.postgresql.enabled -}}
+    {{- printf "%s-postgresql" (tpl .Release.Name $) -}}
+{{- else -}}
+    {{- printf "%s" (include "common.names.fullname" .) -}}
+{{- end -}}
+{{- end -}}
+
+{{- define "hedgedoc.postgresql.fullname" -}}
+{{- printf "%s-%s" .Release.Name "postgresql" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
\ No newline at end of file
diff --git a/charts/hedgedoc/templates/configmap.yaml b/charts/hedgedoc/templates/configmap.yaml
new file mode 100644
index 000000000..04fd4de87
--- /dev/null
+++ b/charts/hedgedoc/templates/configmap.yaml
@@ -0,0 +1,81 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "hedgedoc.fullname" . }}
+  labels:
+    {{- include "hedgedoc.labels" . | nindent 4 }}
+data:
+  {{- if .Values.postgresql.enabled }}
+  CMD_DB_HOST: {{ template "hedgedoc.postgresql.fullname" . }}
+  CMD_DB_PORT: "5432"
+  {{- else }}
+  CMD_DB_HOST: {{ .Values.postgresql.postgresqlHostname }}
+  CMD_DB_PORT: {{ .Values.postgresql.postgresqlPort | default "5432" | quote }}
+  {{- end }}
+  CMD_DB_DATABASE: {{ .Values.postgresql.auth.database }}
+  CMD_DB_USERNAME: {{ .Values.postgresql.auth.username }}
+  {{- with .Values.config.session.lifeTime }}
+  CMD_SESSION_LIFE: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.allowFreeUrl }}
+  CMD_ALLOW_FREE_URL: {{ . | quote }}
+  {{- end }}
+  {{- if .Values.ingress.enabled }}
+  CMD_DOMAIN: {{ (index .Values.ingress.hosts 0).host | quote }}
+  {{- else }}
+  {{- with .Values.config.domain }}
+  CMD_DOMAIN: {{ . | quote }}
+  {{- end }}
+  {{- end }}
+  {{- with .Values.config.email }}
+  CMD_EMAIL: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.protocolUseSsl }}
+  CMD_PROTOCOL_USESSL: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.urlAddPort }}
+  CMD_URL_ADDPORT: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.useCdn }}
+  CMD_USECDN: {{ . | quote }}
+  {{- end }}
+  CMD_IMAGE_UPLOAD_TYPE: minio
+  {{- with .Values.config.minio.endpoint }}
+  CMD_MINIO_ENDPOINT: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.minio.port }}
+  CMD_MINIO_PORT: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.minio.secure }}
+  CMD_MINIO_SECURE: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.s3bucket }}
+  CMD_S3_BUCKET: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.oauth.authorisationUrl }}
+  CMD_OAUTH2_AUTHORIZATION_URL: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.oauth.tokenUrl }}
+  CMD_OAUTH2_TOKEN_URL: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.oauth.userProfileUrl }}
+  CMD_OAUTH2_USER_PROFILE_URL: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.oauth.userProfileUsername }}
+  CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.oauth.userProfileDisplayName }}
+  CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.oauth.userProfileEmailAttr }}
+  CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.oauth.providerName }}
+  CMD_OAUTH2_PROVIDERNAME: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.oauth.scope }}
+  CMD_OAUTH2_SCOPE: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.defaultPermission }}
+  CMD_DEFAULT_PERMISSION: {{ . | quote }}
+  {{- end }}
\ No newline at end of file
diff --git a/charts/hedgedoc/templates/deployment.yaml b/charts/hedgedoc/templates/deployment.yaml
new file mode 100644
index 000000000..4e926e5a6
--- /dev/null
+++ b/charts/hedgedoc/templates/deployment.yaml
@@ -0,0 +1,70 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ include "hedgedoc.fullname" . }}
+  labels:
+    {{- include "hedgedoc.labels" . | nindent 4 }}
+spec:
+  replicas: 1
+  strategy:
+    type: Recreate
+  selector:
+    matchLabels:
+      {{- include "hedgedoc.selectorLabels" . | nindent 6 }}
+  template:
+    metadata:
+      {{- with .Values.podAnnotations }}
+      annotations:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
+      labels:
+        {{- include "hedgedoc.selectorLabels" . | nindent 8 }}
+    spec:
+      {{- with .Values.imagePullSecrets }}
+      imagePullSecrets:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
+      serviceAccountName: {{ include "hedgedoc.serviceAccountName" . }}
+      securityContext:
+        {{- toYaml .Values.podSecurityContext | nindent 8 }}
+      containers:
+        - name: {{ .Chart.Name }}
+          securityContext:
+            {{- toYaml .Values.securityContext | nindent 12 }}
+          image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          envFrom:
+            - configMapRef:
+                name: {{ include "hedgedoc.fullname" . }}
+          env:
+            - name: "CMD_DB_PASSWORD"
+              valueFrom:
+                secretKeyRef:
+                  name: {{ template "hedgedoc.postgresql.secretName" . }}
+                  key: password
+          ports:
+            - name: http
+              containerPort: 3000
+              protocol: TCP
+          livenessProbe:
+            httpGet:
+              path: /_health
+              port: http
+          readinessProbe:
+            httpGet:
+              path: /_health
+              port: http
+          resources:
+            {{- toYaml .Values.resources | nindent 12 }}
+      {{- with .Values.nodeSelector }}
+      nodeSelector:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
+      {{- with .Values.affinity }}
+      affinity:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
+      {{- with .Values.tolerations }}
+      tolerations:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
diff --git a/charts/hedgedoc/templates/ingress.yaml b/charts/hedgedoc/templates/ingress.yaml
new file mode 100644
index 000000000..719ad3640
--- /dev/null
+++ b/charts/hedgedoc/templates/ingress.yaml
@@ -0,0 +1,61 @@
+{{- if .Values.ingress.enabled -}}
+{{- $fullName := include "hedgedoc.fullname" . -}}
+{{- $svcPort := .Values.service.port -}}
+{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
+  {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
+  {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
+  {{- end }}
+{{- end }}
+{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
+apiVersion: networking.k8s.io/v1
+{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
+apiVersion: networking.k8s.io/v1beta1
+{{- else -}}
+apiVersion: extensions/v1beta1
+{{- end }}
+kind: Ingress
+metadata:
+  name: {{ $fullName }}
+  labels:
+    {{- include "hedgedoc.labels" . | nindent 4 }}
+  {{- with .Values.ingress.annotations }}
+  annotations:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+spec:
+  {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
+  ingressClassName: {{ .Values.ingress.className }}
+  {{- end }}
+  {{- if .Values.ingress.tls }}
+  tls:
+    {{- range .Values.ingress.tls }}
+    - hosts:
+        {{- range .hosts }}
+        - {{ . | quote }}
+        {{- end }}
+      secretName: {{ .secretName }}
+    {{- end }}
+  {{- end }}
+  rules:
+    {{- range .Values.ingress.hosts }}
+    - host: {{ .host | quote }}
+      http:
+        paths:
+          {{- range .paths }}
+          - path: {{ .path }}
+            {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
+            pathType: {{ .pathType }}
+            {{- end }}
+            backend:
+              {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
+              service:
+                name: {{ $fullName }}
+                port:
+                  number: {{ $svcPort }}
+              {{- else }}
+              serviceName: {{ $fullName }}
+              servicePort: {{ $svcPort }}
+              {{- end }}
+          {{- end }}
+    {{- end }}
+{{- end }}
diff --git a/charts/hedgedoc/templates/secret.yaml b/charts/hedgedoc/templates/secret.yaml
new file mode 100644
index 000000000..19d8837bd
--- /dev/null
+++ b/charts/hedgedoc/templates/secret.yaml
@@ -0,0 +1,26 @@
+apiVersion: v1
+kind: Secret
+metadata:
+  name: dotfile-secret
+data:
+  {{- with .Values.config.session.secret }}
+  CMD_SESSION_SECRET: {{ . | b64enc }}
+  {{- end }}
+  {{- with .Values.config.github.clientId }}
+  CMD_GITHUB_CLIENTID: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.github.clientSecret }}
+  CMD_GITHUB_CLIENTSECRET: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.minio.accessKey }}
+  CMD_MINIO_ACCESS_KEY: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.minio.secretKey }}
+  CMD_MINIO_SECRET_KEY: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.oauth.clientId }}
+  CMD_OAUTH2_CLIENT_ID: {{ . | quote }}
+  {{- end }}
+  {{- with .Values.config.oauth.clientSecret }}
+  CMD_OAUTH2_CLIENT_SECRET: {{ . | quote }}
+  {{- end }}
\ No newline at end of file
diff --git a/charts/hedgedoc/templates/service.yaml b/charts/hedgedoc/templates/service.yaml
new file mode 100644
index 000000000..92a1bfb79
--- /dev/null
+++ b/charts/hedgedoc/templates/service.yaml
@@ -0,0 +1,15 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "hedgedoc.fullname" . }}
+  labels:
+    {{- include "hedgedoc.labels" . | nindent 4 }}
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    - port: {{ .Values.service.port }}
+      targetPort: http
+      protocol: TCP
+      name: http
+  selector:
+    {{- include "hedgedoc.selectorLabels" . | nindent 4 }}
diff --git a/charts/hedgedoc/templates/serviceaccount.yaml b/charts/hedgedoc/templates/serviceaccount.yaml
new file mode 100644
index 000000000..7dfb0ed66
--- /dev/null
+++ b/charts/hedgedoc/templates/serviceaccount.yaml
@@ -0,0 +1,12 @@
+{{- if .Values.serviceAccount.create -}}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: {{ include "hedgedoc.serviceAccountName" . }}
+  labels:
+    {{- include "hedgedoc.labels" . | nindent 4 }}
+  {{- with .Values.serviceAccount.annotations }}
+  annotations:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+{{- end }}
diff --git a/charts/hedgedoc/templates/tests/test-connection.yaml b/charts/hedgedoc/templates/tests/test-connection.yaml
new file mode 100644
index 000000000..99f9ed6aa
--- /dev/null
+++ b/charts/hedgedoc/templates/tests/test-connection.yaml
@@ -0,0 +1,15 @@
+apiVersion: v1
+kind: Pod
+metadata:
+  name: "{{ include "hedgedoc.fullname" . }}-test-connection"
+  labels:
+    {{- include "hedgedoc.labels" . | nindent 4 }}
+  annotations:
+    "helm.sh/hook": test
+spec:
+  containers:
+    - name: wget
+      image: busybox
+      command: ['wget']
+      args: ['{{ include "hedgedoc.fullname" . }}:{{ .Values.service.port }}']
+  restartPolicy: Never
diff --git a/charts/hedgedoc/tests/80_subchart_postgresql_test.yaml b/charts/hedgedoc/tests/80_subchart_postgresql_test.yaml
new file mode 100644
index 000000000..fae99ccc1
--- /dev/null
+++ b/charts/hedgedoc/tests/80_subchart_postgresql_test.yaml
@@ -0,0 +1,111 @@
+suite: postgresql
+templates:
+  - charts/postgresql/templates/primary/svc.yaml
+  - charts/postgresql/templates/secrets.yaml
+  - charts/postgresql/templates/primary/statefulset.yaml
+  - configmap.yaml
+  - deployment.yaml
+  - secret.yaml
+values:
+  - mocks/test.yaml
+chart:
+  version: 1.2.3
+  appVersion: 4.5.6
+tests:
+  - it: should match service name and configured host
+    asserts:
+      - equal:
+          path: metadata.name
+          value: RELEASE-NAME-postgresql
+        template: charts/postgresql/templates/primary/svc.yaml
+      - equal:
+          path: data.CMD_DB_HOST
+          value: RELEASE-NAME-postgresql
+        template: configmap.yaml
+  - it: should match password secret names and structure
+    asserts:
+      - isNotEmpty:
+          path: data.password
+        template: charts/postgresql/templates/secrets.yaml
+        documentIndex: 0
+      - equal:
+          path: metadata.name
+          value: RELEASE-NAME-postgresql
+        template: charts/postgresql/templates/secrets.yaml
+        documentIndex: 0
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: "CMD_DB_PASSWORD"
+            valueFrom:
+              secretKeyRef:
+                name: RELEASE-NAME-postgresql
+                key: password
+        template: deployment.yaml
+  - it: should have correct default the database username
+    asserts:
+      - equal:
+          path: data.CMD_DB_USERNAME
+          value: hedgedoc
+        template: configmap.yaml
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: POSTGRES_USER
+            value: "hedgedoc"
+        template: charts/postgresql/templates/primary/statefulset.yaml
+  - it: should allow to change the database username
+    set:
+      postgresql:
+        auth:
+          username: test
+    asserts:
+      - equal:
+          path: data.CMD_DB_USERNAME
+          value: test
+        template: configmap.yaml
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: POSTGRES_USER
+            value: "test"
+        template: charts/postgresql/templates/primary/statefulset.yaml
+  - it: should allow to control password changes
+    set:
+      postgresql:
+        auth:
+          password: test
+    asserts:
+      - equal:
+          path: data.password
+          value: dGVzdA==
+        template: charts/postgresql/templates/secrets.yaml
+        documentIndex: 0
+  - it: should use the expected database name
+    asserts:
+      - equal:
+          path: data.CMD_DB_DATABASE
+          value: hedgedoc
+        template: configmap.yaml
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: POSTGRES_DB
+            value: "hedgedoc"
+        template: charts/postgresql/templates/primary/statefulset.yaml
+  - it: should allow to change the database name
+    set:
+      postgresql:
+        auth:
+          database: test
+    asserts:
+      - equal:
+          path: data.CMD_DB_DATABASE
+          value: test
+        template: configmap.yaml
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: POSTGRES_DB
+            value: "test"
+        template: charts/postgresql/templates/primary/statefulset.yaml
\ No newline at end of file
diff --git a/charts/hedgedoc/tests/98_snapshot_test.yaml b/charts/hedgedoc/tests/98_snapshot_test.yaml
new file mode 100644
index 000000000..eb71eb5a0
--- /dev/null
+++ b/charts/hedgedoc/tests/98_snapshot_test.yaml
@@ -0,0 +1,24 @@
+suite: Basic Snapshot test
+templates:
+  - configmap.yaml
+  - deployment.yaml
+  - ingress.yaml
+  - secret.yaml
+  - service.yaml
+  - serviceaccount.yaml
+values:
+  - mocks/test.yaml
+tests:
+  - it: should match basic snapshot
+    set:
+      mastodon:
+        createAdmin:
+          enabled: true
+    chart:
+      version: 1.2.3
+      appVersion: 4.5.6
+    capabilities:
+      apiVersions:
+        - networking.k8s.io/v1/Ingress
+    asserts:
+      - matchSnapshot: {}
diff --git a/charts/hedgedoc/tests/__snapshot__/98_snapshot_test.yaml.snap b/charts/hedgedoc/tests/__snapshot__/98_snapshot_test.yaml.snap
new file mode 100644
index 000000000..9ad622dee
--- /dev/null
+++ b/charts/hedgedoc/tests/__snapshot__/98_snapshot_test.yaml.snap
@@ -0,0 +1,144 @@
+should match basic snapshot:
+  1: |
+    apiVersion: v1
+    data:
+      CMD_DB_DATABASE: hedgedoc
+      CMD_DB_HOST: RELEASE-NAME-postgresql
+      CMD_DB_PORT: "5432"
+      CMD_DB_USERNAME: hedgedoc
+      CMD_DEFAULT_PERMISSION: freely
+      CMD_DOMAIN: hedgedoc.example.com
+      CMD_IMAGE_UPLOAD_TYPE: minio
+      CMD_MINIO_PORT: "443"
+      CMD_MINIO_SECURE: "true"
+      CMD_OAUTH2_SCOPE: openid email profile
+      CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR: name
+      CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR: email
+      CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR: preferred_username
+      CMD_PROTOCOL_USESSL: "true"
+      CMD_S3_BUCKET: hedgedoc
+      CMD_SESSION_LIFE: "3.6e+07"
+    kind: ConfigMap
+    metadata:
+      labels:
+        app.kubernetes.io/instance: RELEASE-NAME
+        app.kubernetes.io/managed-by: Helm
+        app.kubernetes.io/name: hedgedoc
+        app.kubernetes.io/version: 4.5.6
+        helm.sh/chart: hedgedoc-1.2.3
+      name: RELEASE-NAME-hedgedoc
+  2: |
+    apiVersion: apps/v1
+    kind: Deployment
+    metadata:
+      labels:
+        app.kubernetes.io/instance: RELEASE-NAME
+        app.kubernetes.io/managed-by: Helm
+        app.kubernetes.io/name: hedgedoc
+        app.kubernetes.io/version: 4.5.6
+        helm.sh/chart: hedgedoc-1.2.3
+      name: RELEASE-NAME-hedgedoc
+    spec:
+      replicas: 1
+      selector:
+        matchLabels:
+          app.kubernetes.io/instance: RELEASE-NAME
+          app.kubernetes.io/name: hedgedoc
+      strategy:
+        type: Recreate
+      template:
+        metadata:
+          labels:
+            app.kubernetes.io/instance: RELEASE-NAME
+            app.kubernetes.io/name: hedgedoc
+        spec:
+          containers:
+            - env:
+                - name: CMD_DB_PASSWORD
+                  valueFrom:
+                    secretKeyRef:
+                      key: password
+                      name: RELEASE-NAME-postgresql
+              envFrom:
+                - configMapRef:
+                    name: RELEASE-NAME-hedgedoc
+              image: quay.io/hedgedoc/hedgedoc:4.5.6
+              imagePullPolicy: IfNotPresent
+              livenessProbe:
+                httpGet:
+                  path: /_health
+                  port: http
+              name: hedgedoc
+              ports:
+                - containerPort: 3000
+                  name: http
+                  protocol: TCP
+              readinessProbe:
+                httpGet:
+                  path: /_health
+                  port: http
+              resources: {}
+              securityContext: {}
+          securityContext: {}
+          serviceAccountName: RELEASE-NAME-hedgedoc
+  3: |
+    apiVersion: networking.k8s.io/v1
+    kind: Ingress
+    metadata:
+      labels:
+        app.kubernetes.io/instance: RELEASE-NAME
+        app.kubernetes.io/managed-by: Helm
+        app.kubernetes.io/name: hedgedoc
+        app.kubernetes.io/version: 4.5.6
+        helm.sh/chart: hedgedoc-1.2.3
+      name: RELEASE-NAME-hedgedoc
+    spec:
+      rules:
+        - host: hedgedoc.example.com
+          http:
+            paths:
+              - backend:
+                  service:
+                    name: RELEASE-NAME-hedgedoc
+                    port:
+                      number: 80
+                path: /
+                pathType: ImplementationSpecific
+  4: |
+    apiVersion: v1
+    data: null
+    kind: Secret
+    metadata:
+      name: dotfile-secret
+  5: |
+    apiVersion: v1
+    kind: Service
+    metadata:
+      labels:
+        app.kubernetes.io/instance: RELEASE-NAME
+        app.kubernetes.io/managed-by: Helm
+        app.kubernetes.io/name: hedgedoc
+        app.kubernetes.io/version: 4.5.6
+        helm.sh/chart: hedgedoc-1.2.3
+      name: RELEASE-NAME-hedgedoc
+    spec:
+      ports:
+        - name: http
+          port: 80
+          protocol: TCP
+          targetPort: http
+      selector:
+        app.kubernetes.io/instance: RELEASE-NAME
+        app.kubernetes.io/name: hedgedoc
+      type: ClusterIP
+  6: |
+    apiVersion: v1
+    kind: ServiceAccount
+    metadata:
+      labels:
+        app.kubernetes.io/instance: RELEASE-NAME
+        app.kubernetes.io/managed-by: Helm
+        app.kubernetes.io/name: hedgedoc
+        app.kubernetes.io/version: 4.5.6
+        helm.sh/chart: hedgedoc-1.2.3
+      name: RELEASE-NAME-hedgedoc
diff --git a/charts/hedgedoc/tests/mocks/test.yaml b/charts/hedgedoc/tests/mocks/test.yaml
new file mode 100644
index 000000000..95e57c375
--- /dev/null
+++ b/charts/hedgedoc/tests/mocks/test.yaml
@@ -0,0 +1,2 @@
+ingress:
+  enabled: true
\ No newline at end of file
diff --git a/charts/hedgedoc/values.yaml b/charts/hedgedoc/values.yaml
new file mode 100644
index 000000000..32a9bb98c
--- /dev/null
+++ b/charts/hedgedoc/values.yaml
@@ -0,0 +1,110 @@
+# Default values for hedgedoc.
+image:
+  repository: quay.io/hedgedoc/hedgedoc
+  # -- configures image pull policy for hedgedoc deployment
+  pullPolicy: IfNotPresent
+  # -- Overrides the image tag whose default is the chart appVersion.
+  tag: ""
+
+imagePullSecrets: []
+nameOverride: ""
+fullnameOverride: ""
+
+serviceAccount:
+  # Specifies whether a service account should be created
+  create: true
+  # Annotations to add to the service account
+  annotations: {}
+  # The name of the service account to use.
+  # If not set and create is true, a name is generated using the fullname template
+  name: ""
+
+config:
+  domain: null
+  allowFreeUrl: false
+  email: false
+  protocolUseSsl: true
+  urlAddPort: false
+  useCdn: false
+  defaultPermission: freely
+  session:
+    lifeTime: 36000000
+    secret: null
+  github:
+    clientId: null
+    clientSecret: null
+  minio:
+    accessKey: null
+    secretKey: null
+    endpoint: null
+    port: 443
+    secure: true
+  s3bucket: hedgedoc
+  oauth:
+    providerName: null
+    clientId: null
+    clientSecret: null
+    authorisationUrl: null
+    tokenUrl: null
+    userProfileUrl: null
+    userProfileUsername: preferred_username
+    userProfileDisplayName: name
+    userProfileEmailAttr: email
+    scope: openid email profile
+
+
+postgresql:
+  enabled: true
+  auth:
+    database: hedgedoc
+    username: hedgedoc
+    password: ""
+    existingSecret: ""
+
+
+podAnnotations: {}
+
+podSecurityContext: {}
+  # fsGroup: 2000
+
+securityContext: {}
+  # capabilities:
+  #   drop:
+  #   - ALL
+  # readOnlyRootFilesystem: true
+  # runAsNonRoot: true
+  # runAsUser: 1000
+
+service:
+  type: ClusterIP
+  port: 80
+
+ingress:
+  enabled: false
+  className: ""
+  annotations: {}
+    # kubernetes.io/ingress.class: nginx
+    # kubernetes.io/tls-acme: "true"
+  hosts:
+    - host: hedgedoc.example.com
+      paths:
+        - path: /
+          pathType: ImplementationSpecific
+  tls: []
+  #  - secretName: chart-example-tls
+  #    hosts:
+  #      - chart-example.local
+
+resources: {}
+  # limits:
+  #   cpu: 100m
+  #   memory: 512Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 512Mi
+
+nodeSelector: {}
+
+tolerations: []
+
+affinity: {}
-- 
GitLab