Skip to content

Commit

Permalink
Merge pull request #34 from mmoreiradj/feat/init-containers
Browse files Browse the repository at this point in the history
HELM-61 add init containers
  • Loading branch information
gsautner authored Aug 1, 2024
2 parents 04427b7 + c2b1808 commit aa975b2
Show file tree
Hide file tree
Showing 6 changed files with 418 additions and 48 deletions.
2 changes: 1 addition & 1 deletion charts/xwiki/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v2
description: XWiki is a free wiki software platform written in Java with a design emphasis on extensibility. XWiki is an enterprise wiki. It includes WYSIWYG editing, OpenDocument based document import/export, semantic annotations and tagging, and advanced permissions management.
name: xwiki
version: 1.3.1
version: 1.4.0-Beta.0
type: application
keywords:
- xwiki
Expand Down
140 changes: 140 additions & 0 deletions charts/xwiki/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,143 @@ Define which image to use
{{- .Values.image.name -}}
{{- end }}
{{- end }}


{{/*
Database env vars
*/}}
{{- define "xwiki.database.env" }}
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
{{- if and .Values.externalDB.customKeyRef .Values.externalDB.customKeyRef.enabled }}
name: {{ .Values.externalDB.customKeyRef.name | quote }}
key: {{ .Values.externalDB.customKeyRef.key | quote }}
{{- else if .Values.mysql.enabled }}
name: "{{ .Release.Name }}-mysql"
key: mysql-password
{{- else if .Values.postgresql.enabled }}
name: "{{ .Release.Name }}-postgresql"
key: password
{{- else }}
name: {{ .Release.Name | quote }}
key: DB_PASSWORD
{{- end }}
- name: DB_HOST
valueFrom:
configMapKeyRef:
name: {{ include "xwiki.fullname" . }}
key: DB_HOST
- name: DB_USER
valueFrom:
configMapKeyRef:
name: {{ include "xwiki.fullname" . }}
key: DB_USER
- name: DB_DATABASE
valueFrom:
configMapKeyRef:
name: {{ include "xwiki.fullname" . }}
key: DB_DATABASE
{{- end }}

{{/*
Image for the database init container
*/}}
{{- define "xwiki.initContainer.database.image" -}}
{{- if .Values.initContainers.database.image }}
{{ .Values.initContainers.database.image }}
{{- else if .Values.mysql.enabled }}
{{ printf "%s:%s" .Values.mysql.image.repository .Values.mysql.image.tag }}
{{- else if .Values.postgresql.enabled }}
{{ printf "%s:%s" .Values.postgresql.image.repository .Values.postgresql.image.tag }}
{{- else if .Values.mariadb.enabled }}
{{ printf "%s:%s" .Values.mariadb.image.repository .Values.mariadb.image.tag }}
{{- end }}
{{- end }}

{{/*
Command for the database init container
*/}}
{{- define "xwiki.initContainer.database.command" -}}
{{- if .Values.initContainers.database.command }}
{{ .Values.initContainers.database.command }}
{{- else if or .Values.mysql.enabled .Values.mariadb.enabled (eq .Values.externalDB.type "mysql") (eq .Values.externalDB.type "mariadb") }}
mysqladmin ping -h $DB_HOST -u $DB_USER -p$DB_PASSWORD
{{- else if or .Values.postgresql.enabled (eq .Values.externalDB.type "postgresql") }}
PGPASSWORD=$DB_PASSWORD pg_isready -h $DB_HOST -U $DB_USER -d $DB_DATABASE
{{- end }}
{{- end }}

{{/*
Init Containers
*/}}
{{- define "xwiki.initContainers" -}}
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
- name: xwiki-data-permissions
image: {{ include "xwiki.imageName" . }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
command:
- /bin/sh
- -ec
- chown -R "{{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}" /usr/local/xwiki/data
securityContext: {{- omit .Values.volumePermissions.containerSecurityContext "enabled" | toYaml | nindent 12 }}
volumeMounts:
- name: xwiki-data
mountPath: /usr/local/xwiki/data
{{- end }}
{{- if .Values.initContainers.database.enabled }}
- name: wait-for-db
{{- if .Values.initContainers.database.containerSecurityContext.enabled }}
securityContext:
{{- omit .Values.initContainers.database.containerSecurityContext "enabled" | toYaml | nindent 6 }}
{{- end }}
env:
{{- include "xwiki.database.env" . | nindent 4 }}
- name: CHECK_DB
value: {{ include "xwiki.initContainer.database.command" . | trim | quote }}
image: {{ include "xwiki.initContainer.database.image" . | trim | quote }}
command:
- /bin/sh
- -ec
args:
- |
for i in $(seq 1 30); do
if eval $CHECK_DB; then
echo "Database is ready!"
exit 0
fi
echo "Waiting for database..."
sleep 1
done
echo "Database is not ready!"
exit 1
{{- end }}
{{- if .Values.initContainers.solr.enabled }}
- name: wait-for-solr
image: "alpine/curl:8.9.0"
command:
- /bin/sh
- -ec
- |
for i in $(seq 1 30); do
if curl --silent --connect-timeout "15000" $SOLR_BASEURL/admin/info/system | grep '\"status\":0'
echo "Solr is ready!"
exit 0
fi
echo "Waiting for Solr..."
sleep 1
done
echo "Solr is not ready!"
exit 1
{{- if .Values.initContainers.solr.containerSecurityContext.enabled }}
securityContext:
{{- omit .Values.initContainers.solr.containerSecurityContext "enabled" | toYaml | nindent 6 }}
{{- end }}
env:
- name: SOLR_BASEURL
valueFrom:
configMapKeyRef:
name: {{ include "xwiki.fullname" . }}
key: SOLR_BASEURL
{{- end }}
{{- end }}
47 changes: 3 additions & 44 deletions charts/xwiki/templates/xwiki.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,20 +28,9 @@ spec:
{{- include "xwiki.labels" . | nindent 8 }}
spec:
serviceAccountName: {{ $fullName }}-sa
{{- if and .Values.volumePermissions.enabled .Values.persistence.enabled }}
{{- if or .Values.initContainers.database.enabled .Values.initContainers.solr.enabled (and .Values.volumePermissions.enabled .Values.persistence.enabled) }}
initContainers:
- name: xwiki-data-permissions
image: {{ include "xwiki.imageName" . }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
command:
- /bin/sh
- -ec
- |
chown -R "{{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.securityContext.fsGroup }}" /usr/local/xwiki/data
securityContext: {{- omit .Values.volumePermissions.containerSecurityContext "enabled" | toYaml | nindent 12 }}
volumeMounts:
- name: xwiki-data
mountPath: /usr/local/xwiki/data
{{- include "xwiki.initContainers" . | nindent 8 }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
Expand All @@ -68,44 +57,14 @@ spec:
- name: {{ .name }}
value: {{ .value | quote }}
{{- end }}
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
{{- if (and .Values.externalDB.customKeyRef .Values.externalDB.customKeyRef.enabled ) }}
name: {{ .Values.externalDB.customKeyRef.name | quote }}
key: {{ .Values.externalDB.customKeyRef.key | quote }}
{{- else if .Values.mysql.enabled }}
name: "{{ .Release.Name }}-mysql"
key: mysql-password
{{- else if .Values.postgresql.enabled }}
name: "{{ .Release.Name }}-postgresql"
key: password
{{- else }}
name: {{ .Release.Name | quote }}
key: DB_PASSWORD
{{- end }}
{{ include "xwiki.database.env" . | indent 12 }}
{{- if .Values.solr.enabled }}
- name: SOLR_BASEURL
valueFrom:
configMapKeyRef:
name: {{ $fullName }}
key: SOLR_BASEURL
{{- end }}
- name: DB_HOST
valueFrom:
configMapKeyRef:
name: {{ $fullName }}
key: DB_HOST
- name: DB_USER
valueFrom:
configMapKeyRef:
name: {{ $fullName }}
key: DB_USER
- name: DB_DATABASE
valueFrom:
configMapKeyRef:
name: {{ $fullName }}
key: DB_DATABASE
{{- if .Values.probes.startup.enabled }}
startupProbe:
{{- if .Values.probes.startup.httpGet.enabled }}
Expand Down
Loading

0 comments on commit aa975b2

Please sign in to comment.