From 7bc8a58b02968a5114ae850e912dabc24446c834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szymon=20Wa=C5=82achowski?= Date: Tue, 31 Mar 2026 22:40:11 +0200 Subject: [PATCH 1/2] cicd: specify image version matching current setup --- compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose.yaml b/compose.yaml index 816e3f5..c36a9a4 100644 --- a/compose.yaml +++ b/compose.yaml @@ -2,7 +2,7 @@ version: '2' services: nextcloud: - image: nextcloud + image: nextcloud:28 container_name: nextcloud restart: unless-stopped volumes: From fd3d56aedd2b763815352dd82ddf1d63fd6eb975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szymon=20Wa=C5=82achowski?= Date: Tue, 31 Mar 2026 22:41:31 +0200 Subject: [PATCH 2/2] cicd: change deployment from forgejo actions to kubernetes --- .forgejo/workflows/deploy.yaml | 19 ------------ deployment/ingress.yaml | 27 ++++++++++++++++ deployment/kustomization.yaml | 13 ++++++++ deployment/mariadb-deployment.yaml | 46 ++++++++++++++++++++++++++++ deployment/mariadb-pv.yaml | 35 +++++++++++++++++++++ deployment/mariadb-service.yaml | 11 +++++++ deployment/namespace.yaml | 4 +++ deployment/nextcloud-deployment.yaml | 41 +++++++++++++++++++++++++ deployment/nextcloud-pv.yaml | 35 +++++++++++++++++++++ deployment/nextcloud-service.yaml | 11 +++++++ deployment/secret.yaml | 9 ++++++ 11 files changed, 232 insertions(+), 19 deletions(-) delete mode 100644 .forgejo/workflows/deploy.yaml create mode 100644 deployment/ingress.yaml create mode 100644 deployment/kustomization.yaml create mode 100644 deployment/mariadb-deployment.yaml create mode 100644 deployment/mariadb-pv.yaml create mode 100644 deployment/mariadb-service.yaml create mode 100644 deployment/namespace.yaml create mode 100644 deployment/nextcloud-deployment.yaml create mode 100644 deployment/nextcloud-pv.yaml create mode 100644 deployment/nextcloud-service.yaml create mode 100644 deployment/secret.yaml diff --git a/.forgejo/workflows/deploy.yaml b/.forgejo/workflows/deploy.yaml deleted file mode 100644 index 17b11e9..0000000 --- a/.forgejo/workflows/deploy.yaml +++ /dev/null @@ -1,19 +0,0 @@ -name: Deploy with Docker Compose - -on: [push] - -jobs: - deploy: - runs-on: docker - container: - image: forgejo-actions-base:latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Deploy using Docker Compose (Down and Up) - run: | - project_name=$(basename "$PWD") - echo "Deploying project: $project_name" - docker compose -p "$project_name" down - docker compose -p "$project_name" up -d --remove-orphans diff --git a/deployment/ingress.yaml b/deployment/ingress.yaml new file mode 100644 index 0000000..334f52f --- /dev/null +++ b/deployment/ingress.yaml @@ -0,0 +1,27 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: nextcloud + namespace: nextcloud + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + nginx.ingress.kubernetes.io/proxy-body-size: "0" + nginx.ingress.kubernetes.io/proxy-read-timeout: "600" + nginx.ingress.kubernetes.io/proxy-send-timeout: "600" +spec: + ingressClassName: nginx + tls: + - hosts: + - nextcloud.szymi.ddns.net + secretName: nextcloud-tls + rules: + - host: nextcloud.szymi.ddns.net + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: nextcloud + port: + number: 80 diff --git a/deployment/kustomization.yaml b/deployment/kustomization.yaml new file mode 100644 index 0000000..35b388d --- /dev/null +++ b/deployment/kustomization.yaml @@ -0,0 +1,13 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: nextcloud +resources: + - namespace.yaml + - secret.yaml + - mariadb-pv.yaml + - nextcloud-pv.yaml + - mariadb-deployment.yaml + - mariadb-service.yaml + - nextcloud-deployment.yaml + - nextcloud-service.yaml + - ingress.yaml diff --git a/deployment/mariadb-deployment.yaml b/deployment/mariadb-deployment.yaml new file mode 100644 index 0000000..1e2dfd4 --- /dev/null +++ b/deployment/mariadb-deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mariadb + namespace: nextcloud +spec: + replicas: 1 + selector: + matchLabels: + app: mariadb + template: + metadata: + labels: + app: mariadb + spec: + containers: + - name: mariadb + image: mariadb:11.1 + args: + - --transaction-isolation=READ-COMMITTED + - --log-bin=binlog + - --binlog-format=ROW + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: nextcloud-db-secret + key: MYSQL_ROOT_PASSWORD + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + name: nextcloud-db-secret + key: MYSQL_PASSWORD + - name: MYSQL_DATABASE + value: nextcloud + - name: MYSQL_USER + value: szymi + ports: + - containerPort: 3306 + volumeMounts: + - name: mariadb-data + mountPath: /var/lib/mysql + volumes: + - name: mariadb-data + persistentVolumeClaim: + claimName: mariadb-pvc diff --git a/deployment/mariadb-pv.yaml b/deployment/mariadb-pv.yaml new file mode 100644 index 0000000..9202a61 --- /dev/null +++ b/deployment/mariadb-pv.yaml @@ -0,0 +1,35 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: mariadb-pv +spec: + capacity: + storage: 10Gi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: local-storage + local: + path: /media/ssd/mariadb + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - szymicluster-control-plane +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: mariadb-pvc + namespace: nextcloud +spec: + accessModes: + - ReadWriteOnce + storageClassName: local-storage + resources: + requests: + storage: 10Gi + volumeName: mariadb-pv diff --git a/deployment/mariadb-service.yaml b/deployment/mariadb-service.yaml new file mode 100644 index 0000000..fb1543f --- /dev/null +++ b/deployment/mariadb-service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: mariadb + namespace: nextcloud +spec: + selector: + app: mariadb + ports: + - port: 3306 + targetPort: 3306 diff --git a/deployment/namespace.yaml b/deployment/namespace.yaml new file mode 100644 index 0000000..e8c2e8f --- /dev/null +++ b/deployment/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: nextcloud diff --git a/deployment/nextcloud-deployment.yaml b/deployment/nextcloud-deployment.yaml new file mode 100644 index 0000000..32f5349 --- /dev/null +++ b/deployment/nextcloud-deployment.yaml @@ -0,0 +1,41 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nextcloud + namespace: nextcloud +spec: + replicas: 1 + selector: + matchLabels: + app: nextcloud + template: + metadata: + labels: + app: nextcloud + spec: + containers: + - name: nextcloud + image: nextcloud:28 + env: + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + name: nextcloud-db-secret + key: MYSQL_PASSWORD + - name: MYSQL_DATABASE + value: nextcloud + - name: MYSQL_USER + value: szymi + - name: MYSQL_HOST + value: mariadb + - name: OVERWRITEPROTOCOL + value: https + ports: + - containerPort: 80 + volumeMounts: + - name: nextcloud-data + mountPath: /var/www/html + volumes: + - name: nextcloud-data + persistentVolumeClaim: + claimName: nextcloud-pvc diff --git a/deployment/nextcloud-pv.yaml b/deployment/nextcloud-pv.yaml new file mode 100644 index 0000000..2f71fb9 --- /dev/null +++ b/deployment/nextcloud-pv.yaml @@ -0,0 +1,35 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nextcloud-pv +spec: + capacity: + storage: 50Gi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: local-storage + local: + path: /media/ssd/nextcloud + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - szymicluster-control-plane +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nextcloud-pvc + namespace: nextcloud +spec: + accessModes: + - ReadWriteOnce + storageClassName: local-storage + resources: + requests: + storage: 50Gi + volumeName: nextcloud-pv diff --git a/deployment/nextcloud-service.yaml b/deployment/nextcloud-service.yaml new file mode 100644 index 0000000..e49b2b5 --- /dev/null +++ b/deployment/nextcloud-service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: nextcloud + namespace: nextcloud +spec: + selector: + app: nextcloud + ports: + - port: 80 + targetPort: 80 diff --git a/deployment/secret.yaml b/deployment/secret.yaml new file mode 100644 index 0000000..d85d391 --- /dev/null +++ b/deployment/secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: nextcloud-db-secret + namespace: nextcloud +type: Opaque +stringData: + MYSQL_ROOT_PASSWORD: "2a!qd*6s" + MYSQL_PASSWORD: "2a!qd*6s"