feat(ci): add elasticsearch setup for helm (#635)
This commit is contained in:
parent
c5f052892a
commit
a3f68cfa01
|
|
@ -0,0 +1,74 @@
|
||||||
|
{
|
||||||
|
"index_patterns": ["coze_resource*"],
|
||||||
|
"template": {
|
||||||
|
"settings": {
|
||||||
|
"number_of_shards": 1,
|
||||||
|
"number_of_replicas": 0,
|
||||||
|
"analysis": {
|
||||||
|
"analyzer": {
|
||||||
|
"text_analyzer": {
|
||||||
|
"type": "custom",
|
||||||
|
"tokenizer": "standard",
|
||||||
|
"filter": ["lowercase", "stop", "snowball"]
|
||||||
|
},
|
||||||
|
"smartcn": {
|
||||||
|
"type": "smartcn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": {
|
||||||
|
"dynamic": false,
|
||||||
|
"properties": {
|
||||||
|
"res_type": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"app_id": {
|
||||||
|
"type": "keyword",
|
||||||
|
"null_value": "NULL"
|
||||||
|
},
|
||||||
|
"res_id": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"res_sub_type": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "text",
|
||||||
|
"analyzer": "smartcn",
|
||||||
|
"search_analyzer": "smartcn",
|
||||||
|
"fields": {
|
||||||
|
"raw": {
|
||||||
|
"type": "keyword"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"owner_id": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"space_id": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"biz_status": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"publish_status": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"create_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"update_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"publish_time": {
|
||||||
|
"type": "long"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"priority": 200,
|
||||||
|
"_meta": {
|
||||||
|
"description": "resource library's index template"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
{
|
||||||
|
"index_patterns": ["project_draft*"],
|
||||||
|
"template": {
|
||||||
|
"settings": {
|
||||||
|
"number_of_shards": 1,
|
||||||
|
"number_of_replicas": 0,
|
||||||
|
"analysis": {
|
||||||
|
"analyzer": {
|
||||||
|
"text_analyzer": {
|
||||||
|
"type": "custom",
|
||||||
|
"tokenizer": "standard",
|
||||||
|
"filter": ["lowercase", "stop", "snowball"]
|
||||||
|
},
|
||||||
|
"smartcn": {
|
||||||
|
"type": "smartcn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": {
|
||||||
|
"dynamic": false,
|
||||||
|
"properties": {
|
||||||
|
"create_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"has_published": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "text",
|
||||||
|
"analyzer": "smartcn",
|
||||||
|
"search_analyzer": "smartcn",
|
||||||
|
"fields": {
|
||||||
|
"raw": {
|
||||||
|
"type": "keyword"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"owner_id": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"publish_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"space_id": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"update_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"fav_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"recently_open_time": {
|
||||||
|
"type": "long"
|
||||||
|
},
|
||||||
|
"is_fav": {
|
||||||
|
"type": "keyword"
|
||||||
|
},
|
||||||
|
"is_recently_open": {
|
||||||
|
"type": "keyword"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"priority": 200,
|
||||||
|
"_meta": {
|
||||||
|
"description": "Project draft index template"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ include "opencoze.fullname" . }}-es-init-config
|
||||||
|
data:
|
||||||
|
{{ (.Files.Glob "files/es/*.json").AsConfig | indent 2 }}
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: {{ include "opencoze.fullname" . }}-es-init
|
||||||
|
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
restartPolicy: Never
|
||||||
|
initContainers:
|
||||||
|
- name: wait-for-es
|
||||||
|
image: busybox:1.36
|
||||||
|
command: ['sh', '-c', 'until nc -z {{ include "opencoze.fullname" . }}-elasticsearch 9200; do echo waiting for elasticsearch; sleep 2; done']
|
||||||
|
containers:
|
||||||
|
- name: es-init
|
||||||
|
image: alpine/curl:8.12.1
|
||||||
|
env:
|
||||||
|
- name: ES_USERNAME
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ .Release.Name }}-es-secret
|
||||||
|
key: username
|
||||||
|
- name: ES_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ .Release.Name }}-es-secret
|
||||||
|
key: password
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
set -ex
|
||||||
|
/scripts/setup_es.sh
|
||||||
|
volumeMounts:
|
||||||
|
- name: es-init-script
|
||||||
|
mountPath: /scripts
|
||||||
|
- name: es-index-schema
|
||||||
|
mountPath: /es_index_schema
|
||||||
|
volumes:
|
||||||
|
- name: es-init-script
|
||||||
|
configMap:
|
||||||
|
name: {{ include "opencoze.fullname" . }}-es-init-script
|
||||||
|
defaultMode: 0755
|
||||||
|
- name: es-index-schema
|
||||||
|
configMap:
|
||||||
|
name: {{ include "opencoze.fullname" . }}-es-init-config
|
||||||
|
backoffLimit: 4
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ include "opencoze.fullname" . }}-es-init-script
|
||||||
|
data:
|
||||||
|
setup_es.sh: |
|
||||||
|
#!/bin/sh
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
ES_HOST="http://{{ include "opencoze.fullname" . }}-elasticsearch:9200"
|
||||||
|
|
||||||
|
CURL_AUTH=""
|
||||||
|
if [ -n "$ES_USERNAME" ] && [ -n "$ES_PASSWORD" ]; then
|
||||||
|
CURL_AUTH="-u $ES_USERNAME:$ES_PASSWORD"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Wait for Elasticsearch to be ready
|
||||||
|
until curl -s -f $CURL_AUTH "$ES_HOST/_cluster/health?wait_for_status=yellow&timeout=5s"; do
|
||||||
|
echo "Waiting for Elasticsearch..."
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
|
# Upload index templates
|
||||||
|
for file in /es_index_schema/*.json; do
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
template_name=$(basename "$file" .index-template.json)
|
||||||
|
echo "Uploading index template $template_name"
|
||||||
|
curl -X PUT $CURL_AUTH "$ES_HOST/_index_template/$template_name" -H "Content-Type: application/json" --data-binary "@$file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Create indices
|
||||||
|
for file in /es_index_schema/*.json; do
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
template_name=$(basename "$file" .index-template.json)
|
||||||
|
index_name=$template_name
|
||||||
|
echo "Creating index $index_name"
|
||||||
|
curl -X PUT $CURL_AUTH "$ES_HOST/$index_name" -H "Content-Type: application/json" -d'{
|
||||||
|
"settings": {
|
||||||
|
"index": {
|
||||||
|
"number_of_shards": 1,
|
||||||
|
"number_of_replicas": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Elasticsearch setup complete."
|
||||||
Loading…
Reference in New Issue