create plausible clickhouse database
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: clickhouse-db-init
|
||||
labels:
|
||||
app.kubernetes.io/name: clickhouse-db-init
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
containers:
|
||||
- name: clickhouse-init
|
||||
image: clickhouse/clickhouse-server:{{ .Chart.AppVersion }}
|
||||
command: ["bash", "-c"]
|
||||
args:
|
||||
- |
|
||||
echo "⏳ Waiting for ClickHouse..."
|
||||
until clickhouse-client \
|
||||
--host {{ .Values.clickhouse.host }} \
|
||||
--port {{ .Values.clickhouse.port }} \
|
||||
--user {{ .Values.clickhouse.adminUser }} \
|
||||
--password "{{ .Values.clickhouse.adminPassword }}" \
|
||||
-q "SELECT 1" >/dev/null 2>&1; do
|
||||
sleep 2
|
||||
done
|
||||
echo "✅ ClickHouse ready"
|
||||
|
||||
{{- if .Values.databases }}
|
||||
echo "➡️ Creating declared databases & users..."
|
||||
clickhouse-client \
|
||||
--host {{ .Values.clickhouse.host }} \
|
||||
--port {{ .Values.clickhouse.port }} \
|
||||
--user {{ .Values.clickhouse.adminUser }} \
|
||||
--password "{{ .Values.clickhouse.adminPassword }}" \
|
||||
--multiquery < /config/init.sql
|
||||
{{- end }}
|
||||
|
||||
echo "➡️ Generating list of databases to drop..."
|
||||
clickhouse-client \
|
||||
--host {{ .Values.clickhouse.host }} \
|
||||
--port {{ .Values.clickhouse.port }} \
|
||||
--user {{ .Values.clickhouse.adminUser }} \
|
||||
--password "{{ .Values.clickhouse.adminPassword }}" \
|
||||
-q "
|
||||
SELECT concat('DROP DATABASE IF EXISTS ', name, ';')
|
||||
FROM system.databases
|
||||
WHERE name NOT IN (
|
||||
'system',
|
||||
'information_schema',
|
||||
'INFORMATION_SCHEMA',
|
||||
'default'
|
||||
{{- if .Values.databases }}
|
||||
{{- range $db := .Values.databases }}
|
||||
, '{{ $db }}'
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
);
|
||||
" > /tmp/to_drop.sql
|
||||
|
||||
if [ -s /tmp/to_drop.sql ]; then
|
||||
echo "➡️ Dropping leftover databases:"
|
||||
cat /tmp/to_drop.sql
|
||||
|
||||
clickhouse-client \
|
||||
--host {{ .Values.clickhouse.host }} \
|
||||
--port {{ .Values.clickhouse.port }} \
|
||||
--user {{ .Values.clickhouse.adminUser }} \
|
||||
--password "{{ .Values.clickhouse.adminPassword }}" \
|
||||
--multiquery < /tmp/to_drop.sql
|
||||
|
||||
else
|
||||
echo "✔️ No databases to drop."
|
||||
fi
|
||||
|
||||
echo "🎉 Initialization completed"
|
||||
volumeMounts:
|
||||
- name: init-sql
|
||||
mountPath: /config
|
||||
volumes:
|
||||
- name: init-sql
|
||||
configMap:
|
||||
name: clickhouse-init-sql
|
||||
Reference in New Issue
Block a user