- onlyoffice kubernetes resource limits and pvc
All checks were successful
/ continuous-deploy (push) Successful in 23s

- continuous deploy revision
- environments variables validation
- vscode tasks for deploy
- vscode testing some new plugins
This commit is contained in:
Márcio Fernandes
2026-04-10 03:21:05 +00:00
parent e3bcb3c864
commit a9e368beb1
12 changed files with 101 additions and 26 deletions

View File

@@ -17,7 +17,6 @@
"ms-kubernetes-tools.vscode-kubernetes-tools", "ms-kubernetes-tools.vscode-kubernetes-tools",
"redhat.ansible", "redhat.ansible",
"mtxr.sqltools-driver-mysql", "mtxr.sqltools-driver-mysql",
"stateful.runme",
"yzhang.markdown-all-in-one", "yzhang.markdown-all-in-one",
"davidanson.vscode-markdownlint", "davidanson.vscode-markdownlint",
"eamodio.gitlens", "eamodio.gitlens",
@@ -28,7 +27,10 @@
"eamodio.gitlens", "eamodio.gitlens",
"shd101wyy.markdown-preview-enhanced", "shd101wyy.markdown-preview-enhanced",
"bierner.markdown-mermaid", "bierner.markdown-mermaid",
"bierner.markdown-preview-github-styles" "bierner.markdown-preview-github-styles",
"sycl.markdown-command-runner",
"jeepshen.vscode-markdown-code-runner",
"batyan-soft.fast-tasks"
] ]
} }
} }

View File

@@ -35,6 +35,7 @@ jobs:
- name: Deploy - name: Deploy
shell: bash shell: bash
env: env:
# used by kustomization requires env files
MARIADB_USER: ${{ secrets.MARIADB_USER }} MARIADB_USER: ${{ secrets.MARIADB_USER }}
MARIADB_PASSWORD: ${{ secrets.MARIADB_PASSWORD }} MARIADB_PASSWORD: ${{ secrets.MARIADB_PASSWORD }}
MARIADB_ROOT_PASSWORD: ${{ secrets.MARIADB_ROOT_PASSWORD }} MARIADB_ROOT_PASSWORD: ${{ secrets.MARIADB_ROOT_PASSWORD }}
@@ -42,6 +43,8 @@ jobs:
PBS_REPOSITORY: ${{ secrets.PBS_REPOSITORY }} PBS_REPOSITORY: ${{ secrets.PBS_REPOSITORY }}
PBS_PASSWORD: ${{ secrets.PBS_PASSWORD }} PBS_PASSWORD: ${{ secrets.PBS_PASSWORD }}
PBS_FINGERPRINT: ${{ secrets.PBS_FINGERPRINT }} PBS_FINGERPRINT: ${{ secrets.PBS_FINGERPRINT }}
ONLYOFFICE_SECRET: ${{ secrets.ONLYOFFICE_SECRET }}
# used only on helm set values - only required as environment variables # used only on helm set values - only required as environment variables
NEXTCLOUD_HOST: ${{ secrets.NEXTCLOUD_HOST }} NEXTCLOUD_HOST: ${{ secrets.NEXTCLOUD_HOST }}
NEXTCLOUD_USERNAME: ${{ secrets.NEXTCLOUD_USERNAME }} NEXTCLOUD_USERNAME: ${{ secrets.NEXTCLOUD_USERNAME }}
@@ -51,23 +54,27 @@ jobs:
set -euo pipefail set -euo pipefail
# ensure cleanup always runs # ensure cleanup always runs
trap 'rm -f \ trap '
deploy/app/.env.d/*' EXIT [ -d deploy/app/.env.d ] && rm -rf deploy/app/.env.d/*;
[ -d deploy/app/onlyoffice/.env.d ] && rm -rf deploy/app/onlyoffice/.env.d/*;
' EXIT
# setup secrets files # setup secrets files
echo "MARIADB_USER=${MARIADB_USER}" >> deploy/app/.env.d/nextcloud-mariadb.env echo "MARIADB_USER=${MARIADB_USER:?Missing MARIADB_USER}" >> deploy/app/.env.d/nextcloud-mariadb.env
echo "MARIADB_PASSWORD=${MARIADB_PASSWORD}" >> deploy/app/.env.d/nextcloud-mariadb.env echo "MARIADB_PASSWORD=${MARIADB_PASSWORD:?Missing MARIADB_PASSWORD}" >> deploy/app/.env.d/nextcloud-mariadb.env
echo "MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}" >> deploy/app/.env.d/nextcloud-mariadb.env echo "MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:?Missing MARIADB_ROOT_PASSWORD}" >> deploy/app/.env.d/nextcloud-mariadb.env
echo "MARIADB_DATABASE=${MARIADB_DATABASE}" >> deploy/app/.env.d/nextcloud-mariadb.env echo "MARIADB_DATABASE=${MARIADB_DATABASE:?Missing MARIADB_DATABASE}" >> deploy/app/.env.d/nextcloud-mariadb.env
echo "PBS_REPOSITORY=${PBS_REPOSITORY}" >> deploy/app/.env.d/pbs.env echo "PBS_REPOSITORY=${PBS_REPOSITORY:?Missing PBS_REPOSITORY}" >> deploy/app/.env.d/pbs.env
echo "PBS_PASSWORD=${PBS_PASSWORD}" >> deploy/app/.env.d/pbs.env echo "PBS_PASSWORD=${PBS_PASSWORD:?Missing PBS_PASSWORD}" >> deploy/app/.env.d/pbs.env
echo "PBS_FINGERPRINT=${PBS_FINGERPRINT}" >> deploy/app/.env.d/pbs.env echo "PBS_FINGERPRINT=${PBS_FINGERPRINT:?Missing PBS_FINGERPRINT}" >> deploy/app/.env.d/pbs.env
echo "secret=${ONLYOFFICE_SECRET:?Missing ONLYOFFICE_SECRET}" >> deploy/app/onlyoffice/.env.d/onlyoffice.env
# enforce secrets files security # enforce secrets files security
chmod 600 deploy/app/.env.d/* chmod 600 deploy/app/.env.d/*
chmod 600 deploy/app/onlyoffice/.env.d/*
# invoke deploy script # invoke deploy script
ops-scripts/apply-app.sh ops-scripts/apply-app.sh

View File

@@ -1,6 +1,7 @@
{ {
"cSpell.words": [ "cSpell.words": [
"authentik", "authentik",
"documentserver",
"onlyoffice" "onlyoffice"
] ]
} }

19
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,19 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Apply Infra",
"type": "shell",
"command": "./ops-scripts/apply-infra.sh",
"problemMatcher": [],
},
{
"label": "Apply App",
"type": "shell",
"command": "./ops-scripts/apply-app.sh",
"problemMatcher": []
}
]
}

View File

@@ -117,7 +117,6 @@ su -s /bin/bash www-data -c "php occ files:scan-app-data"
### Mimetype migrations available ### Mimetype migrations available
```bash ```bash
# Rebuild appdata and caches # Rebuild appdata and caches
@@ -139,8 +138,12 @@ su -s /bin/bash www-data -c "php occ maintenance:repair --include-expensive"
This script is intended to be executed only by lowprivilege deployment identities, such as the **continuousdeploy** ServiceAccount or an application maintainer with equivalent permissions. This script is intended to be executed only by lowprivilege deployment identities, such as the **continuousdeploy** ServiceAccount or an application maintainer with equivalent permissions.
Can be executed in VS Code using the “Apply App” task.
```bash ```bash
#!/bin/bash
./ops-scripts/apply-app.sh ./ops-scripts/apply-app.sh
``` ```
**Responsibilities:** **Responsibilities:**
@@ -158,6 +161,7 @@ This script is intended to be executed only by lowprivilege deployment identi
**Security context:** **Security context:**
This script requires elevated clusterlevel permissions and must be executed only by platform maintainers, not by the continuousdeploy identity. This script requires elevated clusterlevel permissions and must be executed only by platform maintainers, not by the continuousdeploy identity.
Can be executed in VS Code using the “Apply Infra” task.
```bash ```bash
./ops-scripts/apply-infra.sh ./ops-scripts/apply-infra.sh
@@ -178,6 +182,7 @@ This script requires elevated clusterlevel permissions and must be executed o
kubectl exec -it nextcloud-mariadb-0 -- mariadb -u nextcloud -h nextcloud-mariadb.cloud-limbosolutions-com.svc.cluster.local -p kubectl exec -it nextcloud-mariadb-0 -- mariadb -u nextcloud -h nextcloud-mariadb.cloud-limbosolutions-com.svc.cluster.local -p
``` ```
**Restore database:** **Restore database:**
``` bash ``` bash

View File

@@ -14,7 +14,7 @@ resources:
- ./storage-limbosolutions-com/pvc.yaml - ./storage-limbosolutions-com/pvc.yaml
- ./mariadb-deploy.yaml - ./mariadb-deploy.yaml
- ./backups/backup-pbs-cronjob.yaml - ./backups/backup-pbs-cronjob.yaml
# - ./onlyoffice - enable to execute manually, required cicd revision to be enable by default - ./onlyoffice
generatorOptions: generatorOptions:
disableNameSuffixHash: true disableNameSuffixHash: true

View File

@@ -26,3 +26,25 @@ spec:
secretKeyRef: secretKeyRef:
name: onlyoffice name: onlyoffice
key: secret key: secret
resources:
limits:
memory: "2048Mi"
cpu: "1000m"
requests:
memory: "256Mi"
cpu: "250m"
volumeMounts:
- name: onlyoffice-data
mountPath: /var/www/onlyoffice/Data
- name: onlyoffice-logs
mountPath: /var/log/onlyoffice
volumes:
- name: onlyoffice-data
persistentVolumeClaim:
claimName: onlyoffice-data
- name: onlyoffice-logs
persistentVolumeClaim:
claimName: onlyoffice-logs

View File

@@ -6,7 +6,6 @@ secretGenerator:
envs: envs:
- ./.env.d/onlyoffice.env - ./.env.d/onlyoffice.env
generatorOptions: generatorOptions:
disableNameSuffixHash: true disableNameSuffixHash: true
namespace: cloud-limbosolutions-com namespace: cloud-limbosolutions-com
@@ -14,3 +13,4 @@ namespace: cloud-limbosolutions-com
resources: resources:
- ./deployment.yaml - ./deployment.yaml
- ./service.yaml - ./service.yaml
- ./pvc.yaml

View File

@@ -0,0 +1,22 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: onlyoffice-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: onlyoffice-logs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -54,7 +54,7 @@ spec:
middlewares: middlewares:
# middleware managed by icarus # middleware managed by icarus
- name: authentik-forward-auth - name: authentik-forward-auth
namespace: kube-system namespace: traefik-common
- name: nextcloud-security-headers - name: nextcloud-security-headers
- name: rate-limit - name: rate-limit

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
set -e set -e
echo "Executing app deploy." echo "Executing nextcloud app deploy."
kubectl kustomize deploy/app | kubectl apply -f - kubectl kustomize deploy/app | kubectl apply -f -
@@ -21,15 +21,14 @@ helm repo add nextcloud https://nextcloud.github.io/helm/ --force-update
load_env_file "deploy/app/.env.d/nextcloud-mariadb.env" load_env_file "deploy/app/.env.d/nextcloud-mariadb.env"
load_env_file "deploy/app/.env.d/nextcloud-secrets.env" load_env_file "deploy/app/.env.d/nextcloud-secrets.env"
helm upgrade --install nextcloud nextcloud/nextcloud \ helm upgrade --install nextcloud nextcloud/nextcloud \
--values ./deploy/app/helm-values.yaml \ --values ./deploy/app/helm-values.yaml \
--set externalDatabase.user=${MARIADB_USER} \ --set externalDatabase.user=${MARIADB_USER:?Missing MARIADB_USER} \
--set externalDatabase.password=${MARIADB_PASSWORD} \ --set externalDatabase.password=${MARIADB_PASSWORD:?Missing MARIADB_PASSWORD} \
--set externalDatabase.database=${MARIADB_DATABASE} \ --set externalDatabase.database=${MARIADB_DATABASE:?Missing MARIADB_DATABASE} \
--set nextcloud.host=${NEXTCLOUD_HOST} \ --set nextcloud.host=${NEXTCLOUD_HOST:?Missing NEXTCLOUD_HOST} \
--set nextcloud.username=${NEXTCLOUD_USERNAME} \ --set nextcloud.username=${NEXTCLOUD_USERNAME:?Missing NEXTCLOUD_USERNAME} \
--set nextcloud.password=${NEXTCLOUD_PASSWORD} \ --set nextcloud.password=${NEXTCLOUD_PASSWORD:?Missing NEXTCLOUD_PASSWORD} \
--namespace cloud-limbosolutions-com --namespace cloud-limbosolutions-com

View File

@@ -3,5 +3,3 @@ set -e
echo "Executing infra deploy." echo "Executing infra deploy."
kubectl kustomize deploy/infra | kubectl -n cloud-limbosolutions-com apply -f - kubectl kustomize deploy/infra | kubectl -n cloud-limbosolutions-com apply -f -