Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions helmchart/.helmdocsignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
charts
23 changes: 23 additions & 0 deletions helmchart/.helmignore
Original file line number Diff line number Diff line change
@@ -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/
10 changes: 10 additions & 0 deletions helmchart/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
apiVersion: v2
name: esdump
description: chart for ElasticSearchDump.
type: application

version: 1.0.0
engine: gotpl

appVersion: "v1.0.0"

245 changes: 245 additions & 0 deletions helmchart/templates/esdump-job.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,245 @@
{{ if .Values.esdumpexportjob.enabled }}

apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Release.Name }}-esdump-export-job-{{ .Release.Revision }}
annotations:
"helm.sh/hook": post-install,post-upgrade
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
spec:
backoffLimit: 0
ttlSecondsAfterFinished: 7200
template:
spec:
restartPolicy: Never
containers:
- name: esdump-export-job
resources:
limits:
ephemeral-storage: 4Gi
requests:
ephemeral-storage: 4Gi
image: alpine:latest
command:
- /bin/sh
- -c
args:
- |
set -e
apk add wget
apk add rclone
echo DOWNLOADING ElasticSearchDump
wget -O esdump.tar.xz {{.Values.esdumpexportjob.ElasticSearchDumpFile}}
echo UNPACKING
tar -xvf esdump.tar.xz --no-same-owner

./esdump -action=$ACTION -user=$ELASTIC_USERNAME -password=$ELASTIC_PASSWORD -port=$ELASTIC_PORT -host=$ELASTIC_API_HOST -path="/esdata" -index="$INDEX" -newindex="$NEWINDEX"
ls -lha /esdata
timestamp=$(date +"%Y-%m-%d_%H-%M-%S")
output_file="${timestamp}.tar.gz"
tar -czf "$output_file" ./esdata

echo UPLOADING to LAKEFS //esdump/main/$output_file

rclone copy "$output_file" :s3://esdump/main/ \
--s3-provider="Other" \
--s3-endpoint="$LAKECTL_SERVER_ENDPOINT_URL" \
--s3-access-key-id=$LAKECTL_CREDENTIALS_ACCESS_KEY_ID \
--s3-secret-access-key=$LAKECTL_CREDENTIALS_SECRET_ACCESS_KEY
echo UPLOADING to LAKEFS COMPLETE

volumeMounts:
- name: data-volume
mountPath: /esdata
env:
- name: ELASTIC_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.esdumpexportjob.ElasticKeyRefName }}
key: password
- name: ELASTIC_USERNAME
valueFrom:
secretKeyRef:
name: {{ .Values.esdumpexportjob.ElasticKeyRefName }}
key: username
- name: ELASTIC_PORT
value: {{ .Values.esdumpexportjob.ElasticPort | quote}}
- name: ELASTIC_API_HOST
value: {{ .Values.esdumpexportjob.ElasticHost | quote}}
- name: ACTION
value: "export"
- name: INDEX
value: {{ .Values.esdumpexportjob.Index | quote}}
- name: NEWINDEX
value: {{ .Values.esdumpexportjob.NewIndex | quote}}
- name: LAKECTL_SERVER_ENDPOINT_URL
valueFrom:
configMapKeyRef:
name: "{{ .Values.esdumpexportjob.LakeFSKeyRefName }}"
key: lakefs_host
- name: LAKECTL_CREDENTIALS_ACCESS_KEY_ID
valueFrom:
configMapKeyRef:
name: "{{ .Values.esdumpexportjob.LakeFSKeyRefName }}"
key: lakefs_access_key_id
- name: LAKECTL_CREDENTIALS_SECRET_ACCESS_KEY
valueFrom:
configMapKeyRef:
name: "{{ .Values.esdumpexportjob.LakeFSKeyRefName }}"
key: lakefs_secret_access_key
volumes:
- name: data-volume
emptyDir:
sizeLimit: "4096Mi"

{{ end }}
{{ if .Values.esdumpimportjob.enabled }}
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Release.Name }}-esdump-import-job-{{ .Release.Revision }}
labels:
app: search
spec:
template:
spec:
restartPolicy: Never
initContainers:
- name: init-es-index
image: python:3.14-alpine
command:
- /bin/sh
- -c
args:
- |
set -e
apk add wget
echo DOWNLOADING Index_init
wget -O index_init.py https://raw.githubusercontent.com/helxplatform/dug/refs/heads/$DUG_BRANCH_NAME/src/dug/core/index_init.py
wget -O requirements_indexinit.txt https://github.com/helxplatform/dug/raw/refs/heads/$DUG_BRANCH_NAME/requirements_indexinit.txt
ls -lha
echo INSTALLING REQUIREMENTS
pip install -r requirements_indexinit.txt
echo INITIALIZING INDEX
python index_init.py
echo COMPLETE
env:
- name: ELASTIC_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.esdumpimportjob.ElasticKeyRefName }}
key: password
- name: ELASTIC_USERNAME
valueFrom:
secretKeyRef:
name: {{ .Values.esdumpimportjob.ElasticKeyRefName }}
key: username
- name: ELASTIC_API_HOST
value: {{ .Values.esdumpimportjob.ElasticHostFull | quote}}
- name: DUG_BRANCH_NAME
value: {{ .Values.esdumpimportjob.DUG_BRANCH_NAME | quote}}
- name: IN_delete_existing_indices
value: {{ .Values.esdumpimportjob.IN_delete_existing_indices | quote}}
- name: IN_studies_index_name
value: {{ .Values.esdumpimportjob.IN_studies_index_name | quote}}
- name: IN_variables_index_name
value: {{ .Values.esdumpimportjob.IN_variables_index_name | quote}}
- name: IN_sections_index_name
value: {{ .Values.esdumpimportjob.IN_sections_index_name | quote}}
- name: IN_concepts_index_name
value: {{ .Values.esdumpimportjob.IN_concepts_index_name | quote}}
- name: IN_kg_index_name
value: {{ .Values.esdumpimportjob.IN_kg_index_name | quote}}
containers:
- name: elastic-import-job
resources:
limits:
ephemeral-storage: 4Gi
requests:
ephemeral-storage: 4Gi
image: alpine:latest
command:
- /bin/sh
- -c
args:
- |
set -e
apk add wget
apk add rclone
echo DOWNLOADING ElasticSearchDump
wget -O esdump.tar.xz {{.Values.esdumpimportjob.ElasticSearchDumpFile}}
echo UNPACKING
tar -xvf esdump.tar.xz --no-same-owner

mkdir /esdata/extracted

echo "IMPORT"
echo DOWNLOADING from LAKEFS "$FILE_TO_IMPORT"

rclone copyto :s3://esdump/main/"$FILE_TO_IMPORT" /esdata/"$FILE_TO_IMPORT" \
--s3-provider="Other" \
--s3-endpoint="$LAKECTL_SERVER_ENDPOINT_URL" \
--s3-access-key-id=$LAKECTL_CREDENTIALS_ACCESS_KEY_ID \
--s3-secret-access-key=$LAKECTL_CREDENTIALS_SECRET_ACCESS_KEY
ls -lha /esdata/
echo ----------------
if [ -f "/esdata/$FILE_TO_IMPORT" ]; then
echo "$FILE exists."
else
echo "$FILE does not exist."
exit 1
fi
echo COMPLETE
echo UNPACKING
tar -xzf /esdata/$FILE_TO_IMPORT -C /esdata/extracted
echo ----------------
ls -lha /esdata/extracted/esdata
./esdump -action=$ACTION -user=$ELASTIC_USERNAME -password=$ELASTIC_PASSWORD -port=$ELASTIC_PORT -host=$ELASTIC_API_HOST -path="/esdata/extracted/esdata"

volumeMounts:
- name: data-volume
mountPath: /esdata
env:
- name: ELASTIC_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.esdumpimportjob.ElasticKeyRefName }}
key: password
- name: ELASTIC_USERNAME
valueFrom:
secretKeyRef:
name: {{ .Values.esdumpimportjob.ElasticKeyRefName }}
key: username
- name: ELASTIC_PORT
value: {{ .Values.esdumpimportjob.ElasticPort | quote}}
- name: ELASTIC_API_HOST
value: {{ .Values.esdumpimportjob.ElasticHost | quote}}
- name: ACTION
value: "import"
- name: FILE_TO_IMPORT
value: {{ .Values.esdumpimportjob.FileToImport | quote}}
- name: LAKECTL_SERVER_ENDPOINT_URL
valueFrom:
configMapKeyRef:
name: "{{ .Values.esdumpexportjob.LakeFSKeyRefName }}"
key: lakefs_host
- name: LAKECTL_CREDENTIALS_ACCESS_KEY_ID
valueFrom:
configMapKeyRef:
name: "{{ .Values.esdumpexportjob.LakeFSKeyRefName }}"
key: lakefs_access_key_id
- name: LAKECTL_CREDENTIALS_SECRET_ACCESS_KEY
valueFrom:
configMapKeyRef:
name: "{{ .Values.esdumpexportjob.LakeFSKeyRefName }}"
key: lakefs_secret_access_key

volumes:
- name: data-volume
emptyDir: {}

backoffLimit: 0
ttlSecondsAfterFinished: 7200

{{ end }}
34 changes: 34 additions & 0 deletions helmchart/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
fullnameOverride: ""
nameOverride: ""


esdumpexportjob:
enabled: "false"
ElasticSearchDumpFile: "https://github.com/RENCI/ElasticSearchDump/releases/download/2/esdump.tar.xz"
ElasticPort: "9200"
ElasticHost: "elasticsearch-master"
Index: "variables_index concepts_index studies_index sections_index kg_index"
NewIndex: "test_variables_index test_concepts_index test_studies_index test_sections_index test_kg_index"
ReleaseName: "search"
ElasticKeyRefName: "search-elastic-secret"
LakeFSKeyRefName: "search-data-config"


esdumpimportjob:
enabled: "true"
ElasticSearchDumpFile: "https://github.com/RENCI/ElasticSearchDump/releases/download/2/esdump.tar.xz"
ElasticHostFull: "https://elasticsearch-master:9200"
ElasticHost: "elasticsearch-master"
ElasticPort: "9200"
ReleaseName: "search"
FileToImport: "2026-08-21_18-32-26.tar.gz"
ElasticKeyRefName: "search-elastic-secret"
LakeFSKeyRefName: "search-data-config"
DUG_BRANCH_NAME: "develop"
IN_delete_existing_indices: "true"
IN_studies_index_name: "test_studies_index"
IN_variables_index_name: "test_variables_index"
IN_sections_index_name: "test_sections_index"
IN_concepts_index_name: "test_concepts_index"
IN_kg_index_name: "test_kg_index"