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 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 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