Compare commits

...

82 Commits

Author SHA1 Message Date
816ff471cb Fix unquoted certificates error
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 2s
2024-02-27 08:32:25 +00:00
826884baff Fixed default vaule
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 2s
2024-02-27 08:29:08 +00:00
0b1258bebe Update version to 1.1
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 3s
2024-02-27 08:27:32 +00:00
a1acf02233 Add secret fields to specification
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 5s
2024-02-26 16:01:05 +00:00
bae6a260f0 Merge branch 'dev-newchart'
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 2s
2024-02-26 15:51:54 +00:00
047c1c8758 Dev-newchart
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 2s
2024-02-26 15:50:44 +00:00
9d56d1d0b9 Fixed cert
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 6s
2024-02-23 19:26:34 +01:00
b036ce7710 Fixed
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 7s
2024-02-23 19:19:59 +01:00
d478cb6ec3 Update .gitea/workflows/upload-helm.yml
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 2s
2024-02-23 18:17:57 +00:00
3cdaaf07a4 Update Chart/templates/deployment.yaml
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 3s
2024-02-23 18:17:45 +00:00
4876cdc866 Update Chart/templates/deployment.yaml 2024-02-23 18:16:32 +00:00
847eca2458 Update .gitea/workflows/upload-helm.yml
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 6s
2024-02-22 19:35:40 +00:00
a2a9d05ee0 Update Chart/templates/job.yaml
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 2s
2024-02-22 19:35:03 +00:00
0c2fbf3a79 Update .gitea/workflows/upload-helm.yml
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 9s
2024-02-22 19:33:26 +00:00
90e6fced80 Update Chart/templates/deployment.yaml
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 2s
2024-02-22 19:32:00 +00:00
c60bcd8c9f Update .gitea/workflows/upload-helm.yml
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 2s
2024-02-22 15:15:35 +00:00
6a66bc9829 Update Chart/templates/deployment.yaml
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 3s
2024-02-22 15:15:18 +00:00
c2bdc364c0 Update Chart/templates/deployment.yaml 2024-02-22 15:12:52 +00:00
b8aef496f4 Fixed
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 2s
2024-01-24 22:16:02 +00:00
c3c8b8eebe Updated CI
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 13s
2024-01-24 22:12:50 +00:00
b6cd28d1e9 Fix pipeline
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 2s
2024-01-24 22:09:39 +00:00
8389dbcee7 Update .gitea/workflows/upload-helm.yml
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 4s
2024-01-24 22:02:12 +00:00
7540309c71 Update .gitea/workflows/upload-helm.yml
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 3s
2024-01-24 22:00:20 +00:00
596c4102ed Changed to tag
All checks were successful
Upload Helm Chart / Explore-Gitea-Actions (push) Successful in 2s
2024-01-06 12:01:46 +01:00
d862f7c132 Added helm chart upload 2024-01-06 11:59:34 +01:00
7cbab35102 Merge branch 'dev-newchart' 2024-01-06 11:50:35 +01:00
4d44f56679 Updated 2024-01-06 11:03:31 +01:00
721dc409ad Update .gitlab-ci.yml 2023-10-30 23:47:38 +01:00
0ada9155eb Parameterize webp conversion 2023-10-30 23:44:39 +01:00
5129be3fc8 Swap imagepullpolicy to always 2023-10-05 18:27:07 +02:00
f70afe5523 Restore webp conversion for init running as job 2023-09-23 18:26:16 +00:00
d6292ca4b0 Fixed labels 2023-09-23 13:41:10 +00:00
c514a76b5e Added restart policy to job 2023-09-23 13:28:50 +00:00
6287a199b8 Added topology key 2023-09-23 13:26:34 +00:00
d884c6cb2b Fixed selector 2023-09-23 13:25:04 +00:00
b7e034847e Fixed topology selector 2023-09-23 13:23:44 +00:00
cbb973550c Added option to run init as a job instead of initContainers 2023-09-23 12:49:56 +00:00
Lars
041946b804 Add customization for proc values 2023-09-13 14:05:07 +02:00
Lars
9793780639 Fix ing, deployment 2023-09-13 13:43:29 +02:00
Lars
a5d7592dc7 IfNotExists => IfNotPResent 2023-09-13 10:56:52 +02:00
Lars
e6b0bb2db2 Updated pull policy for main container since init container pulls image 2023-09-13 10:54:07 +02:00
Lars
e3d4952df6 fixed pointer to addt env 2023-09-13 10:41:57 +02:00
Lars
7bc8d7f084 Update secret type for docker 2023-09-13 10:33:11 +02:00
Lars
06b0355568 Fixed storage provisioner annot 2023-09-13 10:19:53 +02:00
Lars
5f6e0e9e35 Added missing separator to pvc yaml 2023-09-13 10:16:39 +02:00
Lars
8748fa515b Correction to PVC 2023-09-13 10:10:44 +02:00
Lars
fbbeb2e407 Fixed inconsistent pvc names 2023-09-13 10:09:51 +02:00
Lars
d84ebe5751 Added unit json file to mounts 2023-09-13 10:04:13 +02:00
Lars
a062df8654 Fixed issuerRef/kind for cert
Fixed default for additional domains
2023-09-13 09:59:23 +02:00
Lars
900cfed378 Moved data for externalsecret to correct indentation 2023-09-13 09:50:00 +02:00
Lars
cb2b3a2c3a Fixed cert choices 2023-09-12 16:17:14 +02:00
Lars
0c992a6d46 Release version 1.0.0 2023-09-12 15:45:08 +02:00
2604afabb5 Added /var/cloud as default mount 2023-09-08 09:34:28 +02:00
8b85ba35fa Disabled job template 2023-09-05 17:28:56 +02:00
10c0b70359 Deactivated WPCReg Job 2023-09-05 17:27:11 +02:00
9abb6ce3cb Remove autoregister by default 2023-07-19 09:17:49 +02:00
ea197d2006 Fixed port, added starttls 2023-07-19 00:29:37 +02:00
c735392ee5 Updated email port for amazon SES 2023-07-18 23:51:56 +02:00
63f651d622 Add processes to unit 2023-07-18 23:39:38 +02:00
81a2fb2c7f Moved 302 section before wildcard section 2023-07-18 23:29:52 +02:00
8d8630b0c5 Added redirect for login page 2023-07-18 23:27:15 +02:00
a7c67e138c Fixed wrong name for field 2023-07-17 23:45:03 +02:00
8cda255fae Added choice for SMTP server 2023-07-17 23:33:32 +02:00
fa6f0ff85a Changed to command + args 2023-07-10 18:56:09 +02:00
c23ff885f2 == to eq 2023-07-10 18:48:17 +02:00
d252b09a5d Added conditional for init container command 2023-07-10 18:46:33 +02:00
04b1992002 Bugfix 2023-06-29 22:28:15 +02:00
57f012a639 Fixed bug 2023-06-29 22:24:42 +02:00
d952476420 Dynamic provisioning for PVC 2023-06-29 22:23:33 +02:00
3fd277dd88 Updated persistent volume 2023-06-29 22:17:44 +02:00
1f86724ba5 Bump version 2023-06-29 22:09:40 +02:00
47168eb6dc Fixed include 2023-06-29 22:07:54 +02:00
87384c8b63 Added local disk 2023-06-29 22:04:37 +02:00
09e21d9bf4 Fixed env indentation 2023-06-19 09:12:28 +02:00
f2d2f2a825 Fixed env vars for job 2023-06-19 09:07:29 +02:00
e7079e9f99 Fixed conditional for job 2023-06-19 09:03:52 +02:00
c75382cb33 Fixed job error 2023-06-19 08:56:17 +02:00
5dc3b65dba Added WPC self-registration 2023-06-19 08:30:27 +02:00
2795e3e295 Fixed additionalEnv 2023-06-10 22:39:22 +02:00
d9d4cb6447 WebP conv change to bool 2023-06-07 19:12:08 +02:00
01e7d2928e labels under metadata 2023-06-07 19:07:31 +02:00
cca9c91455 Update labels for secrets generated by ESO 2023-06-07 19:06:09 +02:00
18 changed files with 768 additions and 378 deletions

View File

@@ -0,0 +1,23 @@
name: Upload Helm Chart
run-name: Uploading helm chart
on: [push]
jobs:
Explore-Gitea-Actions:
runs-on: ubuntu-latest
env:
HELM_CHART_VERSION: "1.1.2"
steps:
- uses: actions/checkout@v2
- name: Set up Helm
uses: azure/setup-helm@v1
with:
version: 'v3.0.0'
- run: 'sed -i "s/version:.*/version: \"${HELM_CHART_VERSION}\"/" ./Chart/Chart.yaml'
- run: helm package ./Chart
- name: Upload Helm Chart
run: |
curl -ki -X POST \
--user ${{ secrets.HELM_PKG_UPLOAD_USER }}:${{ secrets.HELM_PKG_UPLOAD_PASS }} \
--upload-file "wordyne-${HELM_CHART_VERSION}.tgz" \
https://helm.cloudyne.io/api/charts

2
.gitignore vendored
View File

@@ -1,2 +1,4 @@
example.yaml
example*.yaml
example*.yml
test-*.yaml

View File

@@ -1,5 +1,5 @@
variables:
HELM_CHART_VERSION: "0.6.3"
HELM_CHART_VERSION: "1.0.24"
stages:
- deploy
@@ -9,9 +9,7 @@ default:
name: cloudyne/kubectl-helm:latest
entrypoint: [""]
tags:
- build01
- helm
- chartbuild
- shell
deploy:
stage: deploy

View File

@@ -2,5 +2,5 @@ apiVersion: v2
name: wordyne
description: Helm chart for deploying pre-built website containers to kubernetes clusters
type: application
version: "0.5.3"
version: "1.0.27"
appVersion: "6.2.2"

View File

@@ -0,0 +1,24 @@
{{- if .Values.site.autoRegisterEnabled | default false }}
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "..fullname" . }}-wpc-reg
labels:
{{- include "..labels" . | nindent 4 }}
cloudyne.systems/component: site
spec:
template:
spec:
containers:
- name: register-wpc
image: cloudyne.azurecr.io/register-wpc:latest
command: ["python3", "/app/register-wpc.py"]
env:
- name: WP_HOME
value: "https://{{ ( .Values.site.redirectDomain | default ( .Values.site.domain )) | replace "https://" "" | replace "http://" "" }}"
restartPolicy: Never
imagePullSecrets:
- name: pull-secret
backoffLimit: 4
{{- else }}
{{- end }}

View File

@@ -3,13 +3,17 @@ Define the application name and fullname
*/}}
{{- define "..name" -}}
{{- .Values.site.domain | trunc 63 | replace "." "-" | trimSuffix "-" }}
{{- .Values.site.name | trunc 63 }}
{{- end }}
{{- define "..fullname" -}}
{{ include "..name" . }}
{{- end }}
{{- define "..domains" }}
{{- if .Values.site.additionalDomains }}{{ .Values.site.additionalDomains | toYaml }}{{- end }}
- {{ .Values.site.domain | replace "www." "" }}
{{- end }}
{{- define "..resourcelimits" -}}
resources:
@@ -38,7 +42,31 @@ app.kubernetes.io/name: {{ include "..name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
cloudyne.systems/customer: {{ .Values.customer.legalName | replace " " "-" | trunc 63 | trimSuffix "-" }}
cloudyne.systems/customer-legal-id: {{ .Values.customer.legalId }}
cloudyne.systems/site: {{ .Values.site.domain }}
cloudyne.systems/customer: {{ .Values.customer.legalName | replace " " "-" | replace "," "" | trunc 63 | trimSuffix "-" | quote }}
cloudyne.systems/customer-legal-id: '{{ .Values.customer.legalId }}'
cloudyne.systems/site: {{ .Values.site.domain | quote }}
{{- end }}
{{- define "..selector-labels" -}}
cloudyne.systems/customer: {{ .Values.customer.legalName | replace " " "-" | replace "," "" | trunc 63 | trimSuffix "-" | quote }}
cloudyne.systems/site: {{ .Values.site.domain | quote }}
cloudyne.systems/component: site
{{- end }}
{{- define "..affinity-labels" -}}
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: cloudyne.systems/customer
operator: In
values:
- {{ .Values.customer.legalName | replace " " "-" | replace "," "" | trunc 63 | trimSuffix "-" | quote }}
- key: cloudyne.systems/site
operator: In
values:
- {{ .Values.site.domain | quote }}
- key: cloudyne.systems/component
operator: In
values:
- "site"
topologyKey: kubernetes.io/hostname
{{- end }}

View File

@@ -1,3 +1,4 @@
{{- if and .Values.site.certificate .Values.site.certificate.certManager }}
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
@@ -6,17 +7,21 @@ metadata:
{{- include "..labels" . | nindent 8 }}
spec:
issuerRef:
name: cloudyne-internal-root-v2
kind: ClusterIssuer
name: {{ .Values.site.certificate.issuerRef }}
kind: {{ .Values.site.certificate.issuerKind }}
secretName: {{ include "..fullname" . }}-cert-secret
commonName: {{ .Values.site.url }}
dnsNames:
- {{ .Values.site.domain | replace "www." "" }}
- www.{{ .Values.site.domain | replace "www." "" }}
- {{ .Values.site.domain | replace "www." "" | replace "." "-" }}.eu.cust.azurecd.net
- www.{{ .Values.site.domain | replace "www." "" | replace "." "-" }}.eu.cust.azurecd.net
{{- if .Values.site.additionalIngressDomains }}
{{- range .Values.site.additionalIngressDomains }}
- {{ . }}
{{- end }}
commonName: {{ .Values.site.domain }}
dnsNames: {{ include "..domains" . | nindent 8 }}
{{- else if and .Values.site.certificate .Values.site.certificate.custom .Values.site.certificate.custom.enabled }}
apiVersion: v1
kind: Secret
metadata:
name: {{ include "..fullname" . }}-cert-secret
labels:
{{- include "..labels" . | nindent 8 }}
type: kubernetes.io/tls
data:
tls.crt: {{ .Values.site.certificate.custom.cert | b64enc }}
tls.key: {{ .Values.site.certificate.custom.key | b64enc }}
{{- else }}
{{- end }}

View File

@@ -5,12 +5,32 @@ metadata:
labels:
{{- include "..labels" . | nindent 8 }}
data:
SMTP_PORT: '2525'
SMTP_AUTH: 'true'
SMTP_FROM: 'customer-noreply@v3.nu'
{{- if .Values.email }}
{{- if .Values.email.forceFromEmail }}
SMTP_FORCE_FROM: {{ .Values.email.forceFromEmail }}
{{- if .Values.email.smtpHost }}
SMTP_HOST: {{ .Values.email.smtpHost }}
{{- end }}
{{- if .Values.email.smtpPort }}
SMTP_PORT: {{ .Values.email.smtpPort | quote }}
{{- end }}
{{- if .Values.email.smtpAuth }}
SMTP_AUTH: 'True'
{{- if .Values.email.smtpUser }}
SMTP_USER: {{ .Values.email.smtpUser }}
{{- end }}
{{- if .Values.email.smtpPassword }}
SMTP_PASSWORD: {{ .Values.email.smtpPassword }}
{{- end }}
{{- end }}
{{- if .Values.email.smtpStarttls }}
SMTP_STARTTLS: 'True'
{{- end }}
{{- if .Values.email.defaultSender }}
SMTP_FROM: {{ .Values.email.defaultSender }}
{{- end }}
{{- if .Values.email.defaultSenderName }}
SMTP_FROM_NAME: {{ .Values.email.defaultSenderName }}
{{- end }}
{{- if .Values.email.forceSender }}
SMTP_FORCE_FROM: {{ .Values.email.forceSender }}
{{- end }}
{{- if .Values.email.domains }}
SMTP_ALLOWONLY_DOMAINS: {{ .Values.email.domains | join "," }}
@@ -18,14 +38,9 @@ data:
{{- if .Values.email.allowedEmails }}
SMTP_ALLOWONLY_EMAILS: {{ .Values.email.allowedEmails | join "," }}
{{- end }}
{{- else }}
SMTP_FORCE_FROM: "customer-noreply@v3.nu"
SMTP_FROM_NAME: "V3 Customer Mailer"
{{- end }}
WP_ENV: "{{ .Values.site.environment | default "production" }}"
WP_HOME: "https://{{ ( .Values.site.redirectDomain | default ( .Values.site.domain )) | replace "https://" "" | replace "http://" "" }}"
{{- if .Values.site.additional_env }}
{{- range $k, $v := .Values.site.additionalEnv }}
WP_HOME: "https://{{ .Values.site.domain | replace "http://" "" | replace "https://" "" }}"
{{- if .Values.site.env }}
{{- range $k, $v := .Values.site.env }}
{{ $k }}: {{ $v }}
{{- end }}
{{- end }}
@@ -44,13 +59,26 @@ data:
"webserverGroup": "unit",
"applicationDir": "/app",
"permissions": "0770",
"updatePermissions": true,
"importDatabase": {{ .Values.database.import | default false }},
"databasePath": "{{ .Values.database.importPath | default "" }}",
"overwriteDatabase": {{ .Values.database.overwrite | default false }},
"updatePermissions": {{ .Values.init.wp.updatePermissions | default false }},
"importDatabase": {{ .Values.init.db.active | default false }},
"databasePath": "{{ .Values.init.db.path | default "" }}",
"databaseUrl": "{{ .Values.init.db.url | default "" }}",
"importContent": {{ .Values.init.content.active | default false }},
"contentPath": "{{ .Values.init.content.path | default "" }}",
"contentUrl": "{{ .Values.init.content.url | default "" }}",
"overwriteDatabase": {{ .Values.init.db.overwrite | default false }},
"generateSalts": true,
"activateTheme": "{{ .Values.site.theme | default .Values.site.name }}",
"convertUploadsToWebp": "{{ .Values.site.enableWebpConversion | default false }}",
"activateTheme": "{{ .Values.init.wp.theme | default .Values.site.name }}",
{{- if .Values.init.asJob }}
"convertUploadsToWebp": {{ .Values.init.content.webpConverter | default true }},
{{- else }}
"convertUploadsToWebp": {{ .Values.init.content.webpConverter | default false }},
{{- end }}
{{- if and .Values.storage.cloud.active .Values.storage.local.active }}
"backupToCloud": true,
{{- else }}
"backupToCloud": false,
{{- end }}
"convertMissingOnly": true
}
@@ -81,6 +109,30 @@ data:
]
}
},
{
"action": {
"return": 302,
"location": "/wp/wp-admin"
},
"match": {
"uri": [
"/wp-admin",
"/wp-admin/*"
]
}
},
{
"action": {
"return": 302,
"location": "/wp/wp-login.php"
},
"match": {
"uri": [
"/wp-login.php",
"/wp-login.php*"
]
}
},
{
"action": {
"return": 404
@@ -104,19 +156,7 @@ data:
]
}
},
{
"action": {
"return": 302,
"location": "/wp/wp-admin"
},
"match": {
"uri": [
"/wp-admin",
"/wp-admin/*"
]
}
},
{{- if eq .Values.site.enableWebpRoute "true" }}
{{- if (.Values.site.webpRoute | default "true") }}
{
"match": {
"uri": [
@@ -151,18 +191,28 @@ data:
"applications": {
"php": {
"type": "php",
"processes": {
"max": {{ .Values.php.maxProc | default 5 }},
"spare": {{ .Values.php.spareProc | default 1 }},
"idle_timeout": {{ .Values.php.procIdleTimeout | default 65 }}
},
"options": {
"user": {
"display_errors": "{{ .Values.site.displayErrors | default "0" }}",
"log_errors": "{{ .Values.site.logErrors | default "1" }}"
{{- if and .Values.php .Values.php.additionalValues }}
{{- range $k, $v := .Values.php.additionalValues }}
"{{ $k }}": "{{ $v }}",
{{- end }}
{{- end }}
"display_errors": "{{ .Values.php.displayErrors | default "Off" }}",
"log_errors": "{{ .Values.php.logErrors | default "On" }}"
},
"admin": {
"expose_php": "Off",
"short_open_tag": "Off",
"disable_functions": "exec,passthru,shell_exec,system,proc_open,popen,show_source",
"log_errors": "On",
{{- if and .Values.advanced .Values.advanced.php .Values.advanced.php.additionalAdminValues }}
{{- range $k, $v := .Values.advanced.php.additionalAdminValues }}
"log_errors": "{{ .Values.php.logErrors | default "On" }}",
{{- if and .Values.php .Values.php.additionalAdminValues }}
{{- range $k, $v := .Values.php.additionalAdminValues }}
"{{ $k }}": "{{ $v }}",
{{- end }}
{{- else }}
@@ -187,3 +237,20 @@ data:
}
}
}
{{- if .Values.storage.configMap }}
{{- range .Values.storage.configMap }}
{{- if eq .type "configmap" }}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: {{ include "..fullname" $ }}-cm-{{ .name }}
labels:
{{- include "..labels" $ | nindent 8 }}
data:
{{- range $k, $v := .files }}
{{ $v.name }}: {{ $v.content | toYaml | indent 4}}
{{- end }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -6,7 +6,7 @@ metadata:
{{- include "..labels" . | nindent 8 }}
spec:
secretName: {{ include "..fullname" . }}-db-auth
instance: {{ .Values.database.server | default "kincaid" }}
instance: {{ .Values.site.dbInstance | default "kincaid" }}
deletionProtected: yes
backup:
enable: No

View File

@@ -4,7 +4,6 @@ metadata:
name: {{ include "..fullname" . }}
labels:
{{- include "..labels" . | nindent 4 }}
cloudyne.systems/component: site
spec:
{{- if .Values.site.resources }}
replicas: {{ .Values.site.resources.replicas | default 1 }}
@@ -13,96 +12,191 @@ spec:
{{- end }}
selector:
matchLabels:
cloudyne.systems/customer: {{ .Values.customer.legalName | replace " " "-" | lower | trunc 63 }}
cloudyne.systems/customer-legal-id: {{ .Values.customer.legalId }}
cloudyne.systems/site: {{ .Values.site.domain }}
{{- include "..selector-labels" . | nindent 6 }}
template:
metadata:
labels:
cloudyne.systems/customer: {{ .Values.customer.legalName | replace " " "-" | lower | trunc 63 }}
cloudyne.systems/customer-legal-id: {{ .Values.customer.legalId }}
cloudyne.systems/site: {{ .Values.site.domain }}
{{- include "..selector-labels" . | nindent 8 }}
spec:
securityContext:
fsGroup: 101
volumes:
- name: cloud
persistentVolumeClaim:
claimName: pvc-{{ include "..fullname" . }}
- name: serverconfig
configMap:
name: {{ include "..fullname" . }}-cfg
{{- if and .Values.secrets .Values.secrets.external }}
{{- range .Values.secrets.external }}
{{- if eq .type "file" }}
- name: {{ .name }}
secret:
secretName: {{- include "..fullname" $ }}-exts-{{ .name }}
{{- end }}
{{- end }}
{{- end }}
{{- if .Values.storage.kubernetes }}
{{- range .Values.storage.kubernetes }}
- name: {{ .name }}
{{- if eq .type "secret" }}
secret:
secretName: "{{- include "..fullname" $ }}-sec-{{ .name }}"
{{- end }}
{{- if eq .type "configmap" }}
configMap:
name: "{{- include "..fullname" $ }}-sec-{{ .name }}"
{{- end }}
{{- end }}
{{- end }}
{{- if .Values.storage.cloud.active }}
- name: cloud
persistentVolumeClaim:
claimName: pvc-{{- include "..name" . }}-cloud
{{- end }}
{{- if .Values.storage.local.active }}
- name: local
persistentVolumeClaim:
claimName: pvc-{{- include "..name" . }}-local
{{- end }}
{{- if and .Values.secrets .Values.secrets.external }}
{{- range .Values.secrets.external }}
{{- if eq .type "docker" }}
imagePullSecrets:
- name: pull-secret
- name: "{{- include "..fullname" $ }}-exts-{{ .name }}"
{{- end }}
{{- end }}
{{- end }}
{{- if .Values.storage.kubernetes }}
{{- range .Values.storage.kubernetes }}
{{- if eq .type "docker" }}
imagePullSecrets:
- name: "{{- include "..fullname" $ }}-sec-{{ .name }}"
{{- end }}
{{- end }}
{{- end }}
{{- if not .Values.init.asJob }}
initContainers:
- name: deploy
{{- if and .Values.storage.cloud.active .Values.storage.local.active .Values.storage.local.cloneCloud }}
- name: init-local-storage
securityContext:
allowPrivilegeEscalation: false
runAsUser: 0
image: "cloudyne.azurecr.io/buildahome/{{ .Values.site.name | default ( .Values.site.domain | replace "." "-" ) }}:{{ .Values.site.imageTag | default "latest" }}"
image: cloudyne/ubuntu-ci:latest
command: ["python3"]
args: ["/usr/local/bin/storage-clone", "/mnt/cloud", "/mnt/local"]
imagePullPolicy: Always
volumeMounts:
- name: cloud
mountPath: /full-cloud
mountPath: /mnt/cloud
- name: local
mountPath: /mnt/local
{{- end }}
- name: init-site
securityContext:
allowPrivilegeEscalation: false
runAsUser: 0
image: "{{ .Values.site.image }}"
imagePullPolicy: Always
volumeMounts:
- name: serverconfig
mountPath: /init-go/config.json
subPath: init.json
{{- if .Values.storage.wpContent }}
{{- range $v := .Values.storage.wpContent }}
{{- if .Values.storage.cloud.active }}
- name: cloud
mountPath: "/app/web/app/{{ $v }}"
subPath: "{{ $v }}"
mountPath: "/mnt/cloud"
{{- end }}
{{- if .Values.storage.local.active }}
{{- range .Values.storage.folders }}
- name: local
mountPath: "/app/web/app/{{ . }}"
subPath: "{{ . }}"
{{- end }}
{{- if .Values.storage.additionalMounts }}
{{- range $v := .Values.storage.additionalMounts }}
{{- else }}
{{- if .Values.storage.cloud.active }}
{{- range .Values.storage.folders }}
{{- if or ( eq . "certificates" ) ( eq . "secrets" ) }}
- name: local
mountPath: "/app/{{ . }}"
subPath: "{{ . }}"
{{- else }}
- name: cloud
mountPath: {{ $v.localPath }}
subPath: {{ $v.cloudPath }}
mountPath: "/app/web/app/{{ . }}"
subPath: "{{ . }}"
{{- end }}
{{- end }}
{{- end }}
{{- end }}
envFrom:
- configMapRef:
name: {{ include "..fullname" . }}-env
{{- if and .Values.secrets .Values.secrets.external }}
{{- range .Values.secrets.external }}
{{- if eq .type "env" }}
- secretRef:
name: "{{- include "..fullname" $ }}-exts-{{ .name }}"
{{- end }}
{{- end }}
{{- end }}
- secretRef:
name: {{ include "..fullname" . }}-db-auth
- secretRef:
name: global-secrets
command: [ "/init-go/init-go" ]
command: ["sh"]
args: ["-c", "/init-go/init-go"]
{{- end }}
containers:
- name: wordpress
securityContext:
runAsUser: 101
image: "cloudyne.azurecr.io/buildahome/{{ .Values.site.name | default ( .Values.site.domain | replace "." "-" ) }}:{{ .Values.site.imageTag | default "latest" }}"
image: "{{ .Values.site.image }}"
imagePullPolicy: Always
volumeMounts:
- name: serverconfig
mountPath: /docker-entrypoint.d/unit.json
subPath: unit.json
{{- if .Values.storage.wpContent }}
{{- range $v := .Values.storage.wpContent }}
{{- if .Values.storage.cloud.active }}
- name: cloud
mountPath: "/app/web/app/{{ $v }}"
subPath: "{{ $v }}"
mountPath: "/mnt/cloud"
{{- end }}
{{- if .Values.storage.local.active }}
{{- range .Values.storage.folders }}
{{- if or ( eq . "certificates" ) ( eq . "secrets" ) }}
- name: local
mountPath: "/app/{{ . }}"
subPath: "{{ . }}"
{{- else }}
- name: local
mountPath: "/app/web/app/{{ . }}"
subPath: "{{ . }}"
{{- end }}
{{- end }}
{{- if .Values.storage.additionalMounts }}
{{- range $v := .Values.storage.additionalMounts }}
{{- else }}
{{- if .Values.storage.cloud.active }}
{{- range .Values.storage.folders }}
{{- if or ( eq . "certificates" ) ( eq . "secrets" ) }}
- name: cloud
mountPath: {{ $v.localPath }}
subPath: {{ $v.cloudPath }}
mountPath: "/app/{{ . }}"
subPath: "{{ . }}"
{{- else }}
- name: cloud
mountPath: "/app/web/app/{{ . }}"
subPath: "{{ . }}"
{{- end }}
{{- end }}
{{- end }}
{{- end }}
{{- include "..resourcelimits" . | nindent 10 }}
envFrom:
- configMapRef:
name: {{ include "..fullname" . }}-env
{{- if and .Values.secrets .Values.secrets.external }}
{{- range .Values.secrets.external }}
{{- if eq .type "env" }}
- secretRef:
name: "{{- include "..fullname" $ }}-exts-{{ .name }}"
{{- end }}
{{- end }}
{{- end }}
- secretRef:
name: {{ include "..fullname" . }}-db-auth
- secretRef:
name: global-secrets
{{- include "..resourcelimits" . | nindent 10 }}
ports:
- containerPort: 8080
name: http
protocol: TCP

View File

@@ -1,50 +1,37 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: {{ include "..fullname" . }}-ex-gl-secret
labels:
{{- include "..labels" . | nindent 8 }}
spec:
refreshInterval: 4h
secretStoreRef:
kind: ClusterSecretStore
name: az-cluster-store
target:
name: global-secrets
creationPolicy: Orphan
data:
- secretKey: COMPOSER_AUTH
remoteRef:
key: secret/GITLAB-COMPOSER-AUTH
- secretKey: SMTP_USER
remoteRef:
key: secret/SMTP-USER
- secretKey: SMTP_PASS
remoteRef:
key: secret/SMTP-PASSWORD
- secretKey: SMTP_HOST
remoteRef:
key: secret/SMTP-HOST
{{- if and .Values.secrets .Values.secrets.external }}
{{- range .Values.secrets.external }}
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: {{ include "..fullname" . }}-ex-pull-secret
name: {{ include "..fullname" $ }}-ext-{{ .name }}
labels:
{{- include "..labels" . | nindent 8 }}
{{- include "..labels" $ | nindent 8 }}
spec:
refreshInterval: 4h
refreshInterval: {{ .refreshInterval | default "10h" }}
secretStoreRef:
{{- if .ref.clusterSecretStore }}
kind: ClusterSecretStore
name: az-cluster-store
name: {{ .ref.clusterSecretStore }}
{{- else }}
kind: SecretStore
name: {{ .ref.secretStore }}
namespace: {{ .ref.secretStoreNamespace }}
{{- end }}
target:
name: pull-secret
name: {{ include "..fullname" $ }}-exts-{{ .name }}
template:
{{- if eq .type "docker"}}
type: kubernetes.io/dockerconfigjson
{{- end }}
metadata:
labels:
app.kubernetes.io/managed-by: External-Secrets
data:
.dockerconfigjson: "{{`{{ .dockerconfig | toString }}`}}"
creationPolicy: Orphan
data:
- secretKey: dockerconfig
{{- range $v := .items }}
- secretKey: {{ $v.target }}
remoteRef:
key: secret/CLDY-CR-PULL-TOKEN
key: {{ $v.source }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -9,64 +9,19 @@ metadata:
{{- include "..labels" . | nindent 4 }}
spec:
ingressClassName: nginx
{{- if or .Values.site.certificate.certManager .Values.site.certificate.importCert }}
tls:
- secretName: {{ include "..fullname" . }}-cert-secret
hosts:
- {{ .Values.site.domain | replace "www." "" }}
- www.{{ .Values.site.domain | replace "www." "" }}
- {{ .Values.site.domain | replace "www." "" | replace "." "-" }}.eu.cust.azurecd.net
- www.{{ .Values.site.domain | replace "www." "" | replace "." "-" }}.eu.cust.azurecd.net
{{- if .Values.site.additionalIngressDomains }}
{{- range .Values.site.additionalIngressDomains }}
- {{ . }}
hosts: {{ include "..domains" . | nindent 6 }}
{{- else if .Values.site.certificate.existingCert }}
tls:
- secretName: {{ .Values.site.certificate.existingCertName }}
hosts: {{ include "..domains" . | nindent 6 }}
{{- end }}
{{- end }}
rules:
- host: {{ .Values.site.domain | replace "www." "" }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ include "..fullname" . }}
port:
number: 80
- host: www.{{ .Values.site.domain | replace "www." "" }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ include "..fullname" . }}
port:
number: 80
- host: {{ .Values.site.domain | replace "www." "" | replace "." "-" }}.eu.cust.azurecd.net
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ include "..fullname" . }}
port:
number: 80
- host: www.{{ .Values.site.domain | replace "www." "" | replace "." "-" }}.eu.cust.azurecd.net
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ include "..fullname" . }}
port:
number: 80
{{- if .Values.site.additionalIngressDomains }}
{{- range .Values.site.additionalIngressDomains }}
- host: {{ . }}
{{- range include "..domains" . | split "\n" }}
{{- if ne . "" }}
- host: {{ . | replace "- " ""}}
http:
paths:
- path: /

132
Chart/templates/job.yaml Normal file
View File

@@ -0,0 +1,132 @@
#dev-newchart
{{- if .Values.init.asJob }}
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "..fullname" . }}-initializer
labels:
{{- include "..labels" . | nindent 4 }}
cloudyne.systems/component: site-init
spec:
backoffLimit: 2
template:
spec:
restartPolicy: "OnFailure"
affinity: {{ include "..affinity-labels" . | nindent 8 }}
securityContext:
fsGroup: 101
volumes:
- name: serverconfig
configMap:
name: {{ include "..fullname" . }}-cfg
{{- if and .Values.secrets .Values.secrets.external }}
{{- range .Values.secrets.external }}
{{- if eq .type "file" }}
- name: {{ .name }}
secret:
secretName: {{- include "..fullname" $ }}-exts-{{ .name }}
{{- end }}
{{- end }}
{{- end }}
{{- if .Values.storage.kubernetes }}
{{- range .Values.storage.kubernetes }}
- name: {{ .name }}
{{- if eq .type "secret" }}
secret:
secretName: "{{- include "..fullname" $ }}-sec-{{ .name }}"
{{- end }}
{{- if eq .type "configmap" }}
configMap:
name: "{{- include "..fullname" $ }}-sec-{{ .name }}"
{{- end }}
{{- end }}
{{- end }}
{{- if .Values.storage.cloud.active }}
- name: cloud
persistentVolumeClaim:
claimName: pvc-{{- include "..name" . }}-cloud
{{- end }}
{{- if .Values.storage.local.active }}
- name: local
persistentVolumeClaim:
claimName: pvc-{{- include "..name" . }}-local
{{- end }}
{{- if and .Values.secrets .Values.secrets.external }}
{{- range .Values.secrets.external }}
{{- if eq .type "docker" }}
imagePullSecrets:
- name: "{{- include "..fullname" $ }}-exts-{{ .name }}"
{{- end }}
{{- end }}
{{- end }}
{{- if .Values.storage.kubernetes }}
{{- range .Values.storage.kubernetes }}
{{- if eq .type "docker" }}
imagePullSecrets:
- name: "{{- include "..fullname" $ }}-sec-{{ .name }}"
{{- end }}
{{- end }}
{{- end }}
{{- if and .Values.storage.cloud.active .Values.storage.local.active .Values.storage.local.cloneCloud }}
initContainers:
- name: init-local-storage
securityContext:
allowPrivilegeEscalation: false
runAsUser: 0
image: cloudyne/ubuntu-ci:latest
command: ["python3"]
args: ["/usr/local/bin/storage-clone", "/mnt/cloud", "/mnt/local"]
imagePullPolicy: IfNotPresent
volumeMounts:
- name: cloud
mountPath: /mnt/cloud
- name: local
mountPath: /mnt/local
{{- end }}
containers:
- name: init-site
securityContext:
allowPrivilegeEscalation: false
runAsUser: 0
image: "{{ .Values.site.image }}"
imagePullPolicy: IfNotPresent
volumeMounts:
- name: serverconfig
mountPath: /init-go/config.json
subPath: init.json
{{- if .Values.storage.cloud.active }}
- name: cloud
mountPath: "/mnt/cloud"
{{- end }}
{{- if .Values.storage.local.active }}
{{- range .Values.storage.folders }}
- name: local
mountPath: "/app/web/app/{{ . }}"
subPath: "{{ . }}"
{{- end }}
{{- else }}
{{- if .Values.storage.cloud.active }}
{{- range .Values.storage.folders }}
- name: cloud
mountPath: "/app/web/app/{{ . }}"
subPath: "{{ . }}"
{{- end }}
{{- end }}
{{- end }}
envFrom:
- configMapRef:
name: {{ include "..fullname" . }}-env
{{- if and .Values.secrets .Values.secrets.external }}
{{- range .Values.secrets.external }}
{{- if eq .type "env" }}
- secretRef:
name: "{{- include "..fullname" $ }}-exts-{{ .name }}"
{{- end }}
{{- end }}
{{- end }}
- secretRef:
name: {{ include "..fullname" . }}-db-auth
command: ["sh"]
args: ["-c", "/init-go/init-go"]
{{- end }}

View File

@@ -1,26 +1,27 @@
{{ if .Values.storage.cloud.active }}
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-{{ include "..fullname" . }}
name: pv-{{ include "..name" . }}-cloud
labels:
{{- include "..labels" . | nindent 8 }}
{{- include "..labels" . | nindent 4 }}
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: {{ .Values.site.resources.disk | default "5Gi" }}
storage: {{ .Values.site.resources.disk }}
csi:
driver: blob.csi.azure.com
driver: {{ .Values.storage.cloud.driver | default "blob.csi.azure.com" }}
nodeStageSecretRef:
name: cloudyne{{ .Values.storage.class | default "premium01" }}-credentials
name: {{ .Values.storage.cloud.account }}-credentials
namespace: blob-csi
volumeAttributes:
containername: {{ .Values.storage.container | default ( .Values.site.domain | replace "." "-") }}
csi.storage.k8s.io/pv/name: pv-{{ include "..fullname" . }}
csi.storage.k8s.io/pvc/namespace: {{ include "..fullname" . }}
secretnamespace: {{ include "..fullname" . }}
skuName: {{ .Values.storage.type | default "Premium_LRS" }}
volumeHandle: {{ .Values.storage.class | default "premium01" }}-retain_{{ include "..fullname" . }}
containername: {{ .Values.storage.cloud.container }}
csi.storage.k8s.io/pv/name: pv-{{ include "..name" . }}-cloud
csi.storage.k8s.io/pvc/namespace: {{ .Release.Namespace }}
secretnamespace: {{ .Release.Namespace }}
skuName: {{ .Values.storage.cloud.sku | default "Premium_LRS" }}
volumeHandle: {{ .Values.storage.cloud.class }}_{{ .Values.storage.cloud.container }}
mountOptions:
- -o allow_other
- --file-cache-timeout-in-seconds=120
@@ -33,6 +34,6 @@ spec:
- --cache-size-mb=3500
- -o uid=101
persistentVolumeReclaimPolicy: Retain
storageClassName: {{ .Values.storage.class | default "premium01" }}-retain
storageClassName: {{ .Values.storage.cloud.class }}
volumeMode: Filesystem
---
{{- end }}

View File

@@ -1,22 +1,37 @@
---
{{- if .Values.storage.cloud.active }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
volume.beta.kubernetes.io/storage-provisioner: blob.csi.azure.com
volume.kubernetes.io/storage-provisioner: blob.csi.azure.com
name: pvc-{{ include "..name" . }}-cloud
labels:
{{- include "..labels" . | nindent 8 }}
name: pvc-{{ include "..fullname" . }}
{{- include "..labels" . | nindent 4 }}
annotations:
volume.beta.kubernetes.io/storage-provisioner: {{ .Values.storage.cloud.driver }}
volume.kubernetes.io/storage-provisioner: {{ .Values.storage.cloud.driver }}
spec:
volumeMode: Filesystem
volumeName: pv-{{ include "..fullname" . }}
volumeName: pv-{{ include "..name" . }}-cloud
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.site.resources.disk | default "5Gi" }}
{{- if and .Values.storage .Values.storage.class }}
storageClassName: {{ .Values.storage.class | default "premium01" }}-retain
storage: {{ .Values.site.resources.disk }}
storageClassName: {{ .Values.storage.cloud.class }}
{{- end }}
{{- if .Values.storage.local.active }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-{{ include "..name" . }}-local
labels:
{{- include "..labels" . | nindent 4 }}
spec:
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.site.resources.disk }}
storageClassName: {{ .Values.storage.local.class }}
{{- end }}

View File

@@ -0,0 +1,17 @@
{{- if .Values.storage.kubernetes }}
{{- range .Values.storage.kubernetes }}
{{- if eq .type "secret" }}
---
kind: Secret
apiVersion: v1
metadata:
name: {{ include "..fullname" $ }}-sec-{{ .name }}
labels:
{{- include "..labels" $ | nindent 8 }}
stringData:
{{- range $k, $v := .files }}
{{ $v.name }}: {{ $v.content | toYaml | indent 4}}
{{- end }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -10,7 +10,5 @@ spec:
port: 80
targetPort: 8080
selector:
cloudyne.systems/customer: {{ .Values.customer.legalName | replace " " "-" | lower | trunc 63 }}
cloudyne.systems/customer-legal-id: {{ .Values.customer.legalId }}
cloudyne.systems/site: {{ .Values.site.domain }}
{{- include "..selector-labels" . | nindent 4 }}
type: ClusterIP

View File

@@ -1,107 +1,41 @@
customer:
# The (dns-compliant) customer name (Required)
# name: dns-compliant-customer-name
# The customer name (DNS-Compliant)
name: customerdomain-tld
# The legal name of the customer (Required)
# legalName: Customer Name Ltd
# The customer legal name
legalName: Customer Name Ltd.
# The legal ID of the customer (Required)
# legalId: 112233-4455
# The customer legal ID
legalId: 112233-4455
# The timezone for the customer
# The customer timezone
timezone: "Europe/Stockholm"
email:
# Force a given sender email
# forceSender: "example@email.com"
# Set a default sender/display name
# defaultSender: "customer-noreply@v3.nu"
# defaultSenderName: "Customer Name"
# Specify allowed domains/emails to use as senders
# domains:
# - customer.tld
# emails:
# - mail@customer.tld
# Database configuration
database:
# Database server to use
server: kincaid
# Import database from file if not already imported
import: false
importPath: "/full-cloud/import.sql"
overwriteExisting: false
# Storage Settings
storage:
# The storage class to use for the site
# Default: premium01
class: "premium01"
# The storage type to use for the site
# Default: Premium_LRS
type: "Premium_LRS"
# The storage container to use for the site (REQUIRED)
# Default: <domain>-<tld>
# container: "company-tld"
# WP Content Folders
wpContent:
- uploads
- languages
additionalMounts: {}
# - cloudPath: uploads
# localPath: /app/web/app/uploads
site:
# The name of the repository/composerpackage/dockerimage
# Default: domain.replace('.', '-')
# name: "customer-tld"
name: "customerdomain-tld"
domain: "customerdomain.tld"
additionalDomains: []
# Tag of the container to deploy
# imageTag: "latest"
image: "ghcr.io/cloudynes/php-bedrock:8.0-alpine"
# The primary domain/TLD where the site will be available
# domain: customer.tld
env:
WP_ENV: "production"
# The main url (subdomain) for the site
# Only needed if it differs from the domain
# ex.
# redirectDomain: tempdomain.customer.tld
webpRoute: true
dbInstance: ""
# Additional ingress domains that should all
# point to the same site
# Defaults are:
# - <domain>.<tld>
# - www.<domain>.<tld>
# - <domain>-<tld>.eu.cust.azurecd.net
# - www-<domain>-<tld>.eu.cust.azurecd.net
additionalIngressDomains: []
certificate:
certManager: false
# issuerRef: ""
# issuerKind: ""
existingCert: false
# existingCertName: ""
importCert: false
# importCertValue: |
# ....
# importKeyValue: |
# ....
# PHP Version
phpVersion: "8.0"
# Set environment (production/test/staging)
# Default: production
environment: production
# Additional env vars
# additionalEnv:
# MY_ENV_VAR: "value"
additionalEnv: {}
# Enable the route for trying .webp files before images
enableWebpRoute: "true"
# Enable the automatic conversion of WebP images
enableWebpConversion: "true"
# The resource limits for the site
resources:
replicas: 1
php:
@@ -118,15 +52,125 @@ site:
peak: 512Mi
disk: 5Gi
# Log Errors
logErrors: "1"
secrets:
external: []
# - name: "ex-gl-secret"
# type: "env"
# ref:
# secretStore: ""
# clusterSecretStore: "az-cluster-store"
# target: "global-secrets"
# items:
# - source: secret/SMTP-USER
# target: SMTP_USER
# - source: secret/SMTP-PASSWORD
# target: SMTP_PASS
# - source: secret/SMTP-HOST
# target: SMTP_HOST
# - name: "ex-pull-secret"
# type: "docker"
# ref:
# secretStore: ""
# secretStoreNamespace: ""
# clusterSecretStore: "az-cluster-store"
# target: "pull-secret"
# items:
# - source: secret/PULL-TOKEN
# target: dockerconfig
# Display Errors
displayErrors: "0"
# advanced:
# php:
# displayErrors: "0"
# logErrors: "1"
# additionalAdminValues: {}
storage:
kubernetes:
# - name: "pull-secret"
# type: "secret"
# files:
# - name: .dockerconfigjson
# content: |
# {"auths":{"ghcr.io":{"username":"ghcr.io","password":"ghcr.io","auth":"ghcr.io"}}}
# - name: "secret01"
# type: "secret"
# files:
# - name: x
# mount: /x.txt
# content: |
# Hello World
# - name: "config01"
# type: configmap
# files:
# - name: x
# mount: /x.txt
# content: |
# test:
# data:
# - x
# - y
# - z
cloud:
active: false
driver: "blob.csi.azure.com"
account: "azstorage11"
sku: "Premium_LRS"
class: "azstorage11class-retain"
container: "customerdomain-tld"
local:
active: true
cloneCloud: False
class: "longhorn"
folders:
- uploads
- languages
init:
asJob: false
wp:
theme: "abctheme"
updatePermissions: true
db:
active: false
overwrite: false
# path: "/full-cloud/init.sql"
# url: "https://url.to/init.sql"
content:
active: false
overwrite: false
webpConverter: false
# path: "/full-cloud/content.zip"
# url: "https://url.to/content.zip"
email:
relay:
enabled: false
relayName: "smtp-relay"
relayHost: "relay.domain.com"
relayPort: 2525
# Generate automatically
# relayUser: "relayuser"
# relayPassword: "relaypassword"
smtpHost: ""
smtpPort: ""
smtpAuth: false
smtpUser: ""
smtpPassword: ""
smtpStarttls: false
forceSender: ""
defaultSender: ""
defaultSenderName: ""
domains:
- domain
emails:
- email
php:
maxProc: 5
spareProc: 2
procIdleTimeout: 65
logErrors: "On"
displayErrors: "Off"
additionalValues: {}
additionalAdminValues: {}