From c94dbdbba15fdab867242c850a35d97d0b64665a Mon Sep 17 00:00:00 2001
From: groundhog2k <10630407+groundhog2k@users.noreply.github.com>
Date: Sun, 1 Nov 2020 17:43:16 +0100
Subject: [PATCH] Added inital version of wordpress chart (#50)

* Added inital version of wordpress chart

* Fixed trailing spaces in values.yaml
---
 charts/wordpress/.helmignore                  |  23 +++
 charts/wordpress/Chart.lock                   |   6 +
 charts/wordpress/Chart.yaml                   |  20 ++
 charts/wordpress/charts/mariadb-0.1.3.tgz     | Bin 0 -> 4579 bytes
 charts/wordpress/templates/_helpers.tpl       |  88 +++++++++
 charts/wordpress/templates/deployment.yaml    | 126 ++++++++++++
 .../wordpress/templates/extended-config.yaml  |  27 +++
 charts/wordpress/templates/ingress.yaml       |  43 ++++
 charts/wordpress/templates/pvcs.yaml          |  21 ++
 charts/wordpress/templates/secureconfig.yaml  |  27 +++
 charts/wordpress/templates/service.yaml       |  15 ++
 .../wordpress/templates/serviceaccount.yaml   |  12 ++
 .../templates/tests/test-connection.yaml      |  15 ++
 charts/wordpress/values.yaml                  | 184 ++++++++++++++++++
 14 files changed, 607 insertions(+)
 create mode 100644 charts/wordpress/.helmignore
 create mode 100644 charts/wordpress/Chart.lock
 create mode 100644 charts/wordpress/Chart.yaml
 create mode 100644 charts/wordpress/charts/mariadb-0.1.3.tgz
 create mode 100644 charts/wordpress/templates/_helpers.tpl
 create mode 100644 charts/wordpress/templates/deployment.yaml
 create mode 100644 charts/wordpress/templates/extended-config.yaml
 create mode 100644 charts/wordpress/templates/ingress.yaml
 create mode 100644 charts/wordpress/templates/pvcs.yaml
 create mode 100644 charts/wordpress/templates/secureconfig.yaml
 create mode 100644 charts/wordpress/templates/service.yaml
 create mode 100644 charts/wordpress/templates/serviceaccount.yaml
 create mode 100644 charts/wordpress/templates/tests/test-connection.yaml
 create mode 100644 charts/wordpress/values.yaml

diff --git a/charts/wordpress/.helmignore b/charts/wordpress/.helmignore
new file mode 100644
index 00000000..0e8a0eb3
--- /dev/null
+++ b/charts/wordpress/.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/wordpress/Chart.lock b/charts/wordpress/Chart.lock
new file mode 100644
index 00000000..3aaf8870
--- /dev/null
+++ b/charts/wordpress/Chart.lock
@@ -0,0 +1,6 @@
+dependencies:
+- name: mariadb
+  repository: https://groundhog2k.github.io/helm-charts
+  version: 0.1.3
+digest: sha256:7a1725b4d952cb76e1c3d9cb762984dfdba01cc26a282509f0aaada12c108007
+generated: "2020-11-01T17:34:27.3271202+01:00"
diff --git a/charts/wordpress/Chart.yaml b/charts/wordpress/Chart.yaml
new file mode 100644
index 00000000..d2fe4905
--- /dev/null
+++ b/charts/wordpress/Chart.yaml
@@ -0,0 +1,20 @@
+apiVersion: v2
+name: wordpress
+description: A Helm chart for Wordpress on Kubernetes
+
+maintainers:
+  - name: groundhog2k
+
+type: application
+
+# This is the chart version.
+version: 0.1.0
+
+# This is the version number of the application being deployed.
+appVersion: "5.5.1-apache"
+
+dependencies:
+  - name: mariadb
+    version: 0.1.3
+    repository: "https://groundhog2k.github.io/helm-charts"
+    condition: mariadb.enabled
diff --git a/charts/wordpress/charts/mariadb-0.1.3.tgz b/charts/wordpress/charts/mariadb-0.1.3.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..785c7f79276dbf7153a01d9e62f5ac722ded9a7d
GIT binary patch
literal 4579
zcmV<95ghIxiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc
zVQyr3R8em|NM&qo0PH+#a~n63`8>a(BW0^BZ#bl$PI#NU(n`*)YyHrQic?#zlnu@_
zNyHdn3}7g8P2X?70x+1tJSfSDEMNA74-yBD?na}#@oIENBqix|c(Nc;$19StuWmh!
zMx)Wu!GZlh8jafjM|%fHU+wNcI(RfX+TYtd{A#qjcQo4n3P!h2N;efs6ZzHXcjIbz
z?hlekPG6!_RPZq@_ac(#)#vUgK8%l|6jdT=u5I2i{0&(KiIEnV2?@`P{G9$31c$#D
zQ<NMvswg9rYeG3nHI4?rNrq#XOHuH2A?AB;BbQSOU!+$#j)CMkqX{vHqNOKd6z|6S
z(U<1Zzi;yTza*?c^?3}yHTr*ec-Yqe{n6pxz5d@t+TMm!oRNZQa3avq>J)P(RvB^~
zMcdnTwn*Nh1e%dKn*2f`5SbkvEWaC;0%gJI1%e_Ox|+sD9G^ckwIZ7_jsPU)LQyT`
zsx}7zdBND3U^H2c;mPc|&}R~rp#oqVUMx{cnxeAs9cWGFaJdi)AuW4DU9q!NwONZJ
zFqOx!wPm|>Rxkz%6Ny>@;i<J%AW9S<tld+NUQ>7Cs*d5+FV={8Vl2Q}!B{8LV0mG|
z5Q9lBX@WqKL=;>{<@d4s9NYd)a!lxqqJql>>IF(5?RKCRqF^aZ5fX_+V;VvEYYa2O
z6k15foC|FYssb&5q^bF5N2Nsv0IBPa;loGU{$hb8KW2Tc46s6BZ0kOm0T&t+YRg7P
zj2#78;I}{=AgW-F9Hk){3Pt(c0``mpjakl!Hsrf0qGX_#Q7%#hGhI~j)hC2iVOuC&
zWdme_3==J+Vfou?;)<yl5}7Q<K(h4cz@k1*Q(BH*F4B-sQ7+Qs7Tc^$iPVTxA*o(f
z5|oQ{Qs$iquJOID>if>M+Zg`Jf>&xs6mY=@QV9JmNF*r;&Q_3!a;}9-su!ZrkW0Fx
z4Ce@_62jb+s#@61m@_6W&wS;_Roz;KDoAOaXE49uY;`V#{*f|NE2S|T+krO41wU5L
z1vkab%>S06$j9*g_uu=RpA<@$5%M7=noNnR<t-Od!vn9`&sLLvJRN$bn6e$ON2XII
zV+{NIqazFS9F-_!g1~4-OC6W^u0W+#B+J5D<XtVNhyY1mn03%7E59?$tfkuB`|cUF
zc^=fwT0~kfBm7QWUi}h9WHzIm>QzS=7+oSqr68ALijn_3GhYT7ax!IRSV|5XD3q{M
zWMnnLMDSD@tRrLZXojNDRqkN~Fe8)|5-%1K)k3gz4Eqs)Dv|`13UYT1M^REMy(Q35
zgHR(5G@!Kl{xnkeKOd!m1|wfmDY%)@U}+?1%1}kfmu@snx4iHrg3su@kY0PVrhM+k
zc^i)9yf8piWol|IM6Ts37nB=C6oyKpYQ8}!C<7P_%-lp0jdGw+4~z(-{GrgZ@3QGZ
zP)jhUm8}}D3r-V};_HM)jwoZUjd3uhP(n_Wx)d_46lV+sc1LzbjDfJ6EO?QjqzPdl
z2~R~<x4EQ@nc1Z>);mUJh0teZjd62cvluJAy<E^_VQhUlIYC-TW9nyADh+1ArHkBJ
zE7#EIq(>c@96tzNEw|x$Fby@3Sw`8pqU1s~fVP@NVx|`}X&E7vbiUBawlWobE8j1V
zBW*yrH5P7H<t+v#h0-Ex3LQ+DNZx{85M4pb%*2bSnG0r=Ay5uO)X6YgsdsE>n#bwT
z0gDqpi`>r>3w8|afyFw}LYh@mP9(`tqg0V{S*3Wx1hr8nMU_UbUkYY~_k<Ce*?}+<
z6V6Z~H>&{-_?{}G9&q;Z#Pzb(wrV<tzlcjd$d}2$4BCH|>_282B`2CL(JmoMvx@12
z{>!3EaYi|sm5|9WN=G1F@r)SWn@O;gG*3VSz!?6rv}6oSYmd{eXi82bj3{Nr$hNkh
z&qJXqja?~3nOTNBI7gEHEUCs9JV7(MuJoBm(W<%8-$tGPgZo&&|MLqkHGI85W`-};
z`7Lb)ui5|YAM78r_J4<aqtX5T?=I4Z55tGBq}kZ2oiQn9b^SwT*pe)83=fANKSrij
z^!R;l47F};3hWLmj>>uiuc=$5WW}cL77XfAt4OgsaJ1GWe(4S$!mSgm&1!)saI|lK
z(ri-9X7oL54Yr_!g*-Js9d##e!$B$x#^|r$T|t=HOr>TIXz7llpV7g#^|irZ`k-Kn
z2{F3}B{B?7vs`ay6j`c($Z{o#<z9*^craaAPMkiUn7YOesvMJ@IC?Szi44s=Vu6&4
z1XXTJ-Ik~}?uBxeowymxQM-|`e$!Mlm(D6)wzs05XB*3J!f&Q3INw;>$3NVBKx-N+
zE;u0Zxnq%Q>*;J{ej;(Xq+HKn>rZO%C$-gr<&fT7y!wAOgf19Oqao$tr5Q;(qNRAa
zT8vDQT`{V*Rz0Ncu7q56zsrLSScAlzkpyAu&s(tddh63wNMxDdjzYDWLRaocTp-J0
zwHR8e$ME3;P@b?N?RF@3D7)pV+=)Le!N!54lwCZoj&DpE$@93mWv@<)KYZwEvW9ns
z(Aes77fMDrnPWPbt{fmQHIs4|+Q%|~jBqW}+Pxg~lHkrf`ncp2J?^KRa-|7Rut|5Q
zPJL3_Hst-MJ6ClnJiB_n$r3fI#pS_JYdUz)>2Ph`;+;*fc-X^0|2@>L^2gSV0CaTx
zOV7=Bk-F<Yw_|V{k=wZsxbFUM|IuM<{dcr?aDV@IC#j{Z;darez+1}GF}Uw%B##=`
zg}YIPnwXvPxH_-xvt5BI8<<cUOSeU`1hiYQYA#p<r#wZj;lQ-@$m$)g-PC$Oz1?Vm
z_<yG0*QBog+jC;POZ`9E+wJK8?(V(*-$iOEw9|KY$#wVIt+b?kep;e@_Rq;bp1wYR
z@#5n3+3{rZ^NaISx4^09a(5&fhv$;8uGbWj@bsAF3-Y|kV0X0RwcnlzdMM#>qod#9
zJw3iS{_FANu|w$>3cmEG$>VcZV$TPIk|wG7Cy?cg(jAX~pZ?n=(k;3IT&Mqsd+q!G
z!@beH{@+R3p#N3`zJLM9F|pG-E0jk0<ZKMj1;_GMuR2t9S9}dq;AGZb6j~Zg(nQWt
zpV`Xl9V>HlDYQrg8^guPS()cL=jy27W_Sbr-7RaYA76S@Z=N>lf4K|14Kr}9{*OlO
z`Ty|X=wAQtBHd`S?hY$98;Y{}4edqWxxw$Y9Ik$2W^eT+aNKYWLXVdUqZa=p8QTQ^
z-|vi|NB=d^I4hXK+wup#TK{)<clSH`KYDa{um5+ELbWD&u7<U4mvS)qB0GU{At2HE
z1S{v>QEK$_n^Vx7%rl~s#nXVO-!Q))Ilx|DO27esdMr`XPpn>`bS%&nR_Ht5EHFN<
z0c&*VH*~22?YZ9DiM9)5O+d#v^2UAX=}mWb_~cn+(-^e;??Rj%*SOzIf8_@huwhUu
zO?ZJ*wYidpHXYUM*6d78-R@o!vh%fttzf-uv*OzK7CwF)cZxNc2iw-ZtC+1emb1Wb
zw*#+s>TS{&EbZG2t5@wlRqQ>h-Taz0`quZATGT6@hC^Lkx~Me?>-gN&3E$V6Qj?Zt
zgs1In)0-(#i=OO3(vxXDc}SX34rVGY6buUM)iub!={XW<^{^rHjSe*Xw!sU}3|db?
zyKUP~&opc1wOe$(_)MF2Zo5_2%g?lG=eAq5ya4SvOqc~9KepN4;$lOiugnZ2s_FRH
zFH&9S$U6NoWUASNd!hOqLe*k;>7(41B=5Ssai+LpPUuDLeB_>)`Ltt?t>57p(Tgz*
zmqZR3ojRYxmb5v$olXZ1*cDK8miM;RS$=(ELxL>0BO(11IM-ZwZARJlvg}0~g4=}s
zIy+LGYgazQ&FVzXdj?$+KF1rwFr70Z+|K<Sa*BM}tbu&_J7u%ZYl8hzimWZ5?hVg5
z&bqep6Lu`UJqzE9)YaOrNUrSTRV&60KK~{l*eLi{0=J4Mc#IGnng%Zveh)S${5^}{
zUcJOD*Q--1ONVc`xuOnkq<M+I!EQ>&Z;*`O2<V&Y+0yujYaw)xr%Ko3>Tu~BciMKg
zObk52Q+Qz6Vkeq@Z|WV0o1W4YFzTLT1u%Pf)-}_f=^HV&mhOGknk-Ig&+l^1ydH4q
z&vT`WwB)YYZdoI^@TXh;2BEoOhm8|gxFZfVDDd<SiR?IlU#UL3qfV!rR@RS3<&GW}
zmhy8_xvE?K_Ezly-Mf4UA2Zd-KMk<(H;7y3VDw9$Yu%@tC4c@KFOX$)&V|HV$8qib
z&wktgYkzd_|8X~I8_tN<DBWvQCjfA{Kn~M_vXt^U<Rp1Z=BVOm8!i@9fhux)W&>)0
zjKQ3VsXJPweEuy+WbPeLPV^$kCp?X|f#cl0ZF-PPoYD7~I*a=CP7E(NTY=!Vr6I{o
zFTg0rIEqgvuP0hajJBb4Q+|0efs{%W#dE5M_OBy9il_gQL;KffEapS=$A79NAJ%}T
zBzarp_U(g;9>(f2j~>QT@-})Hn?1_ISV%gL9{x|X4KInLqEPVU^s$QKT#8>Y(NRoO
zBtutSieIC6sS=Um@Q-jg<n{mj@$u=i$8nZ^1{~Mu|D#8p_dk2P_xHbdld7N&QS|kz
zmtoYE(Jv1cTIXs!9MWtatA%|46H_sql5~#4vhu*z9Z)_KG9&Ia<9{i=V)(<15j{}v
z3L<d_zJ7Jlj`DI10#knwRKE$1<7WJtgLwDg8Z32-LD}G1JW+JRFgVfnHe5XYkJIxg
zdh_OuJ+S)*%tUL$Uf6gHK~Nm<bOw3Gsx6ACA=k9CPlmM`dN9`UpE1Z*1OLt_Xzart
z8040gCtORB7Kwe)99diLx=^SxnualTloJN8e2-jwjhPe~oVu_de=DXnPYrP{97vpq
zZ1~#a+;NXKb0$_mz~3oXeDW_AfN~(=TdUIZCyt^g+QlbO<x8$=*0IlXtH31w^}?$%
zw1|&2GV{1L(kh3o@DMv@_=t;90#l+e?V${QEtH1o3h;fhAbjpaSX577-?T4R-nhsr
zapZzSNHl9`s;HHaL5N~E-rf6iG;qSTAHR<VaP|^%DVEd-C`!)+!#4X8nx`n)%Alou
zCW+FrNOU2w9BwNeo<e(p6Ga!I5}W!}lAVLiXXClrn_8~kj5{*?iNg02r<>?0e9<sP
zhUL?g5P2}(T{^1P0VNgIa*hvPI!9~xJFZ|2#=gM1dfID#Rgtb>9jyl@xxfBj<Cp!4
z*3k2m&N;He8s2Pey@56SXeGFcD$|l+_aH4=!!=OOh}4wa0Fn#OQ00Ek&Udc%8f1sD
zdu$h;SmiX;AusD!K!WSY29Q#ag7y`|!i&l_x1LmifvTF}?e!WMRi@)_Uj5Rd%!dOq
z?V49;YY<bj<TK3_A_P&h42-9Zm>sRh{03U<^5hzD=gr6(z3}|qKnUu?N7s6D;1efp
z!2xEx)eVBP)nuxTh+{b$h?b4V<9!P()RwP9m#)q6bbR~vJ$)BOBf?JNt3~VfE&6pF
zKB<Cs^g=_v?8r$#ei-t@g%xSW6)7p&=!JGAZ`!Z%+I;Hw)LX+;2xb7<XgvnzV|x$T
zfoB_dIqG{B*VU-!S3DLpP^xq5o{sq<vskjjt`wcSI4q`Vcof~{_(f3G+uVk<@S%c?
zt@}KtuHj_72Ffjs`}?CKL#1EYG-4L5H-+1{ec~LB@L=-Q=$GaoHeylO5%rXXVJ$*v
zn@?+dW~Y}Y&M@24gK9bCkGb8kY7n^0K8+5MHIEj%2qr%A2ggf;?OTV5i$?enpsEYH
zJ{9c&+X(?u4qFvr>N5^o<Ml~bZL07vo|a~uoi>D<DDE{7Y;hODPbS-qZabikdnR1N
z?0^j3z;stMb<`an!NmpKId{=?tiAS^8LAA7m+q8CtN;B^jf7Jcs;2dLsKX+C3X1v~
zwFiD+wMio`l)IgV2i=HJ4t(pGVw*bwT;GM>FhM~~p!!`Ttp5ndPxt9Q-KQ^@{x<*s
N|NkUQpQ8X=003wz^W^{l

literal 0
HcmV?d00001

diff --git a/charts/wordpress/templates/_helpers.tpl b/charts/wordpress/templates/_helpers.tpl
new file mode 100644
index 00000000..bcb6a06a
--- /dev/null
+++ b/charts/wordpress/templates/_helpers.tpl
@@ -0,0 +1,88 @@
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "wordpress.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 "wordpress.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 }}
+
+{{- define "mariadb.servicename" -}}
+{{- if .Values.mariadb.fullnameOverride }}
+{{- .Values.mariadb.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $name := default "mariadb" .Values.mariadb.nameOverride }}
+{{- if contains $name .Release.Name }}
+{{- .Release.Name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{- define "redis.servicename" -}}
+{{- if .Values.redis.fullnameOverride }}
+{{- .Values.redis.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $name := default "redis" .Values.redis.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 "wordpress.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Common labels
+*/}}
+{{- define "wordpress.labels" -}}
+helm.sh/chart: {{ include "wordpress.chart" . }}
+{{ include "wordpress.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end }}
+
+{{/*
+Selector labels
+*/}}
+{{- define "wordpress.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "wordpress.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end }}
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "wordpress.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create }}
+{{- default (include "wordpress.fullname" .) .Values.serviceAccount.name }}
+{{- else }}
+{{- default "default" .Values.serviceAccount.name }}
+{{- end }}
+{{- end }}
diff --git a/charts/wordpress/templates/deployment.yaml b/charts/wordpress/templates/deployment.yaml
new file mode 100644
index 00000000..fcc6a405
--- /dev/null
+++ b/charts/wordpress/templates/deployment.yaml
@@ -0,0 +1,126 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ include "wordpress.fullname" . }}
+  labels:
+    {{- include "wordpress.labels" . | nindent 4 }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  selector:
+    matchLabels:
+      {{- include "wordpress.selectorLabels" . | nindent 6 }}
+  template:
+    metadata:
+    {{- with .Values.podAnnotations }}
+      annotations:
+        {{- toYaml . | nindent 8 }}
+    {{- end }}
+      labels:
+        {{- include "wordpress.selectorLabels" . | nindent 8 }}
+    spec:
+      {{- with .Values.imagePullSecrets }}
+      imagePullSecrets:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
+      serviceAccountName: {{ include "wordpress.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:
+            - secretRef:
+                name: {{ include "wordpress.fullname" . }}
+          env:
+          {{- with .Values.env }}
+            {{- toYaml . | nindent 12 }}
+          {{- end }}
+          ports:
+            - name: http
+              containerPort: {{ .Values.containerPort }}
+              protocol: TCP
+          {{- if .Values.livenessProbe.enabled }}
+          livenessProbe:
+            httpGet:
+              path: /wp-admin/install.php
+              port: http
+              httpHeaders:
+                - name: Host
+                  value: localhost:{{ .Values.containerPort  }}
+          {{- with .Values.livenessProbe }}
+            initialDelaySeconds: {{ .initialDelaySeconds }}
+            timeoutSeconds: {{ .timeoutSeconds }}
+            failureThreshold: {{ .failureThreshold }}
+            successThreshold: {{ .successThreshold }}
+            periodSeconds: {{ .periodSeconds }}
+          {{- end }}
+          {{- end }}
+          {{- if .Values.readinessProbe.enabled }}
+          readinessProbe:
+            httpGet:
+              path: /wp-login.php
+              port: http
+              httpHeaders:
+                - name: Host
+                  value: localhost:{{ .Values.containerPort  }}
+          {{- with .Values.readinessProbe }}
+            initialDelaySeconds: {{ .initialDelaySeconds }}
+            timeoutSeconds: {{ .timeoutSeconds }}
+            failureThreshold: {{ .failureThreshold }}
+            successThreshold: {{ .successThreshold }}
+            periodSeconds: {{ .periodSeconds }}
+          {{- end }}
+          {{- end }}
+          resources:
+            {{- toYaml .Values.resources | nindent 12 }}
+          volumeMounts:
+            - mountPath: /var/www/html
+              name: wordpress-vol
+            - mountPath: /tmp
+              name: tmp
+            - mountPath: /var/run
+              name: run
+            - mountPath: /etc/apache2/ports.conf
+              subPath: ports.conf
+              name: extended
+            - mountPath: /etc/apache2/000-default.conf
+              subPath: 000-default.conf
+              name: extended
+            - mountPath: /usr/local/etc/php/conf.d/custom.ini
+              subPath: custom.ini
+              name: extended              
+      {{- with .Values.nodeSelector }}
+      nodeSelector:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
+      {{- with .Values.affinity }}
+      affinity:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
+      {{- with .Values.tolerations }}
+      tolerations:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
+      volumes:
+        - name: tmp
+          emptyDir: {}
+        - name: run
+          emptyDir: {}
+        - name: extended
+          configMap:
+            name: {{ include "wordpress.fullname" . }}-extended
+        - name: wordpress-vol
+        {{- if .Values.storage.persistentVolumeClaimName }}
+          persistentVolumeClaim:
+            claimName: {{ .Values.storage.persistentVolumeClaimName }}
+        {{- else }}
+        {{- if .Values.storage.requestedSize }}
+          persistentVolumeClaim:
+            claimName: {{ include "wordpress.fullname" . }}
+        {{- else }}
+          emptyDir: {}
+        {{- end }}
+        {{- end }}
\ No newline at end of file
diff --git a/charts/wordpress/templates/extended-config.yaml b/charts/wordpress/templates/extended-config.yaml
new file mode 100644
index 00000000..c40bcc54
--- /dev/null
+++ b/charts/wordpress/templates/extended-config.yaml
@@ -0,0 +1,27 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "wordpress.fullname" . }}-extended
+  labels:
+    {{- include "wordpress.labels" . | nindent 4 }}
+data:
+  000-default.conf: |
+    {{- if .Values.apacheDefaultSiteConfig }}
+    {{ .Values.apacheDefaultSiteConfig | nindent 4 }}
+    {{- else }}
+    <VirtualHost *:{{ .Values.containerPort }}>
+            ServerAdmin webmaster@localhost
+            DocumentRoot /var/www/html
+
+            ErrorLog ${APACHE_LOG_DIR}/error.log
+            CustomLog ${APACHE_LOG_DIR}/access.log combined
+    </VirtualHost>
+    {{- end }}
+  ports.conf: |
+    {{- if .Values.apachePortsConfig }}
+    {{ .Values.apachePortsConfig | nindent 4 }}
+    {{- else }}
+    Listen {{ .Values.containerPort }}
+    {{- end }}
+  custom.ini: |
+    {{ .Values.customPhpConfig | nindent 4 }}
diff --git a/charts/wordpress/templates/ingress.yaml b/charts/wordpress/templates/ingress.yaml
new file mode 100644
index 00000000..1e1fa299
--- /dev/null
+++ b/charts/wordpress/templates/ingress.yaml
@@ -0,0 +1,43 @@
+{{- if .Values.ingress.enabled -}}
+{{- $fullName := include "wordpress.fullname" . -}}
+{{- $svcPort := .Values.service.port -}}
+{{- $maxSize := .Values.ingress.maxBodySize -}}
+{{- 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 "wordpress.labels" . | nindent 4 }}
+  annotations:
+    nginx.ingress.kubernetes.io/proxy-body-size: {{ $maxSize }}  
+  {{- with .Values.ingress.annotations }}
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+spec:
+  {{- 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: {{ . }}
+            backend:
+              serviceName: {{ $fullName }}
+              servicePort: {{ $svcPort }}
+          {{- end }}
+    {{- end }}
+  {{- end }}
diff --git a/charts/wordpress/templates/pvcs.yaml b/charts/wordpress/templates/pvcs.yaml
new file mode 100644
index 00000000..977c6c3f
--- /dev/null
+++ b/charts/wordpress/templates/pvcs.yaml
@@ -0,0 +1,21 @@
+{{- $createNcPvc := and (empty .Values.storage.persistentVolumeClaimName) (.Values.storage.requestedSize) }}
+{{- if $createNcPvc }}
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: {{ include "wordpress.fullname" . }}
+  labels:
+    {{- include "wordpress.labels" . | nindent 4 }}
+spec:
+  {{- with .Values.storage }}
+  accessModes:
+    {{- toYaml .accessModes | nindent 4 }}
+  volumeMode: Filesystem
+  resources:
+    requests:
+      storage: {{ .requestedSize }}
+  {{- if .storageClassName }}
+  storageClassName: {{ .storageClassName }}
+  {{- end }}
+  {{- end }}  
+{{- end }}
diff --git a/charts/wordpress/templates/secureconfig.yaml b/charts/wordpress/templates/secureconfig.yaml
new file mode 100644
index 00000000..60d2d907
--- /dev/null
+++ b/charts/wordpress/templates/secureconfig.yaml
@@ -0,0 +1,27 @@
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ include "wordpress.fullname" . }}
+  labels:
+    {{- include "wordpress.labels" . | nindent 4 }}
+stringData:
+{{- if .Values.mariadb.enabled }}
+  WORDPRESS_DB_HOST: {{ include "mariadb.servicename" . }}
+  {{- with .Values.mariadb.userDatabase }}
+  WORDPRESS_DB_NAME: {{ .name }}
+  WORDPRESS_DB_USER: {{ .user }}
+  WORDPRESS_DB_PASSWORD: {{ .password }}
+  {{- end }}
+{{- else }}
+{{- with .Values.externalDatabase }}
+  WORDPRESS_DB_NAME: {{ .name }}
+  WORDPRESS_DB_USER: {{ .user }}
+  WORDPRESS_DB_PASSWORD: {{ .password }}
+  WORDPRESS_DB_HOST: {{ .host }}
+{{- end }}
+{{- end }}
+{{- with .Values.settings }}
+  {{- if .tablePrefix }}
+  WORDPRESS_TABLE_PREFIX: {{ .tablePrefix }}
+  {{- end }}
+{{- end }}
diff --git a/charts/wordpress/templates/service.yaml b/charts/wordpress/templates/service.yaml
new file mode 100644
index 00000000..2da55e90
--- /dev/null
+++ b/charts/wordpress/templates/service.yaml
@@ -0,0 +1,15 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "wordpress.fullname" . }}
+  labels:
+    {{- include "wordpress.labels" . | nindent 4 }}
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    - port: {{ .Values.service.port }}
+      targetPort: http
+      protocol: TCP
+      name: http
+  selector:
+    {{- include "wordpress.selectorLabels" . | nindent 4 }}
diff --git a/charts/wordpress/templates/serviceaccount.yaml b/charts/wordpress/templates/serviceaccount.yaml
new file mode 100644
index 00000000..2db9c9cf
--- /dev/null
+++ b/charts/wordpress/templates/serviceaccount.yaml
@@ -0,0 +1,12 @@
+{{- if .Values.serviceAccount.create -}}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: {{ include "wordpress.serviceAccountName" . }}
+  labels:
+    {{- include "wordpress.labels" . | nindent 4 }}
+  {{- with .Values.serviceAccount.annotations }}
+  annotations:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+{{- end }}
diff --git a/charts/wordpress/templates/tests/test-connection.yaml b/charts/wordpress/templates/tests/test-connection.yaml
new file mode 100644
index 00000000..95fb60fa
--- /dev/null
+++ b/charts/wordpress/templates/tests/test-connection.yaml
@@ -0,0 +1,15 @@
+apiVersion: v1
+kind: Pod
+metadata:
+  name: "{{ include "wordpress.fullname" . }}-test-connection"
+  labels:
+    {{- include "wordpress.labels" . | nindent 4 }}
+  annotations:
+    "helm.sh/hook": test-success
+spec:
+  containers:
+    - name: wget
+      image: busybox
+      command: ['wget']
+      args: ['{{ include "wordpress.fullname" . }}:{{ .Values.service.port }}']
+  restartPolicy: Never
diff --git a/charts/wordpress/values.yaml b/charts/wordpress/values.yaml
new file mode 100644
index 00000000..c4a2edb1
--- /dev/null
+++ b/charts/wordpress/values.yaml
@@ -0,0 +1,184 @@
+## Default values for Wordpress deployment
+
+## Number of wordpress replicas
+replicaCount: 1
+
+## Netxcloud docker image
+## use arm64v8/nextcloud for the same image on ARM64v8
+image:
+  repository: wordpress
+  pullPolicy: IfNotPresent
+  # Overrides the image tag whose default is the chart appVersion.
+  tag: ""
+
+## Pull secrets and name override options
+imagePullSecrets: []
+nameOverride: ""
+fullnameOverride: ""
+
+## Optional service account
+serviceAccount:
+  # Specifies whether a service account should be created
+  create: false
+  # 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: ""
+
+## Default node type for the image
+## use arm64v8 for the arm64v8/nextcloud image
+nodeSelector:
+  kubernetes.io/arch: amd64
+
+## Additional pod annotations
+podAnnotations: {}
+
+## Pod security options (default: www-data as fsGroup and user running as non-root)
+podSecurityContext:
+  fsGroup: 33
+  runAsUser: 33
+  runAsNonRoot: true
+
+## Default security options to run Wordpress as read only container without privilege escalation
+securityContext:
+  readOnlyRootFilesystem: true
+  allowPrivilegeEscalation: false
+  privileged: false
+
+service:
+  type: ClusterIP
+  port: 80
+
+## Ingress configuration
+ingress:
+  ## Enable ingress endpoint
+  enabled: false
+
+  ## Maximal body size (default: 64m - increase if uploads to Wordpress failing)
+  maxBodySize: 64m
+
+  ## Additional ingress annotations
+  annotations: {}
+    # kubernetes.io/ingress.class: nginx
+    # kubernetes.io/tls-acme: "true"
+
+  ## Hosts
+  hosts:
+    - host:
+      paths: []
+
+  ## TLS settings for hosts
+  tls: []
+  #  - secretName: chart-example-tls
+  #    hosts:
+  #      - chart-example.local
+
+## Resource limits and requests
+resources: {}
+  # limits:
+  #   cpu: 100m
+  #   memory: 128Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 128Mi
+
+## Default liveness probe
+livenessProbe:
+  enabled: true
+  initialDelaySeconds: 30
+  timeoutSeconds: 5
+  failureThreshold: 6
+  successThreshold: 1
+  periodSeconds: 10
+
+## Default readiness probe
+readinessProbe:
+  enabled: true
+  initialDelaySeconds: 30
+  timeoutSeconds: 5
+  failureThreshold: 5
+  successThreshold: 1
+  periodSeconds: 10
+
+tolerations: []
+
+affinity: {}
+
+## Internal container port (default: 8000)
+containerPort: 8000
+
+## Additional environment variables
+env: []
+
+## External database settings (is used when mariadb.enabled is false)
+externalDatabase:
+  ## Name of the database (default: wordpress)
+  name: wordpress
+
+  ## Database user
+  user:
+
+  ## Database password
+  password:
+
+  ## Database host
+  host:
+
+## Wordpress specific settings
+settings:
+  tablePrefix:
+
+## Additional PHP custom.ini
+customPhpConfig: |
+
+## Overwrite default apache ports.conf
+apachePortsConfig: |
+
+## Overwrite default apache 000-default.conf
+apacheDefaultSiteConfig: |
+
+## Storage parameters
+storage:
+  ## Set persistentVolumenClaimName to reference an existing PVC
+  # persistentVolumeClaimName: <own-pvc-name>
+
+  ## Alternative set requestedSize to define a size for a dynmaically created PVC
+  # requestedSize: <volume-size>
+
+  ## the storage class name
+  # className:
+
+  ## Default access mode (ReadWriteOnce)
+  accessModes:
+    - ReadWriteOnce
+
+## MariaDB configuration
+mariadb:
+  ## Enable MariaDB helm chart for deployment (default: false)
+  enabled: false
+
+  ## Database configuration
+  settings:
+    ## The root user password (default: a 10 char. alpahnumerical random password will be generated)
+    rootPassword:
+
+  ## Optional user database which is created during first startup with user and password
+  userDatabase:
+    ## Name of the user database
+    name:
+    ## Database user with full access rights
+    user:
+    ## Password of the database user (default: a 10 char. alpahnumerical random password will be generated)
+    password:
+
+  # Storage parameters
+  storage:
+    ## Set persistentVolumenClaimName to reference an existing PVC
+    # persistentVolumeClaimName: <own-pvc-name>
+
+    ## Alternative set requestedSize to define a size for a dynmaically created PVC
+    # requestedSize: <volume-size>
+
+    ## the storage class name
+    # className:
-- 
GitLab