320 lines
11 KiB
YAML
320 lines
11 KiB
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: "postiz-temporal-shims"
|
|
labels:
|
|
app.kubernetes.io/name: temporal
|
|
helm.sh/chart: temporal-1.0.0-rc.3
|
|
app.kubernetes.io/managed-by: Helm
|
|
app.kubernetes.io/instance: postiz
|
|
app.kubernetes.io/version: "1.30.2"
|
|
app.kubernetes.io/part-of: temporal
|
|
data:
|
|
dockerize: |-
|
|
#!/bin/sh
|
|
set -e
|
|
|
|
# Parse command line arguments
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
-template)
|
|
shift
|
|
TEMPLATE="$1"
|
|
shift
|
|
;;
|
|
*)
|
|
# Ignore other arguments for compatibility
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Process template if specified
|
|
if [ -n "$TEMPLATE" ]; then
|
|
# Split on colon to get source:destination
|
|
SRC="${TEMPLATE%%:*}"
|
|
DST="${TEMPLATE#*:}"
|
|
|
|
# Create destination directory if it doesn't exist
|
|
mkdir -p "$(dirname "$DST")"
|
|
|
|
# Copy the file
|
|
cp "$SRC" "$DST"
|
|
|
|
echo "Skipped dockerize, copied $SRC to $DST"
|
|
fi
|
|
temporal-elasticsearch-tool: |-
|
|
#!/bin/sh
|
|
set -e
|
|
|
|
if [ -x /usr/local/bin/temporal-elasticsearch-tool ]; then
|
|
exec /usr/local/bin/temporal-elasticsearch-tool "$@"
|
|
fi
|
|
|
|
# Build base URL from environment variables
|
|
ES_URL="${ES_SCHEME}://${ES_HOST}:${ES_PORT}"
|
|
|
|
# Build curl auth string if credentials are provided
|
|
CURL_AUTH=""
|
|
if [ -n "$ES_USER" ] && [ -n "$ES_PWD" ]; then
|
|
CURL_AUTH="--user ${ES_USER}:${ES_PWD}"
|
|
fi
|
|
|
|
# Helper function to make curl requests
|
|
curl_request() {
|
|
local method="$1"
|
|
local path="$2"
|
|
local data_file="$3"
|
|
local fail_silently="$4"
|
|
|
|
local curl_cmd="curl -X ${method} --silent --show-error ${CURL_AUTH} ${ES_URL}${path}"
|
|
|
|
if [ -n "$data_file" ]; then
|
|
curl_cmd="${curl_cmd} -H 'Content-Type: application/json' --data-binary @${data_file}"
|
|
fi
|
|
|
|
if [ "$fail_silently" != "true" ]; then
|
|
curl_cmd="${curl_cmd} --fail"
|
|
fi
|
|
|
|
curl_cmd="${curl_cmd} 2>&1"
|
|
|
|
eval "$curl_cmd"
|
|
}
|
|
|
|
# Parse command
|
|
COMMAND="${1:-}"
|
|
shift || true
|
|
|
|
case "$COMMAND" in
|
|
setup-schema)
|
|
# Setup cluster settings and index template
|
|
if [ -z "$ES_VERSION" ]; then
|
|
echo "Error: ES_VERSION environment variable is required" >&2
|
|
exit 1
|
|
fi
|
|
|
|
CLUSTER_SETTINGS_FILE="schema/elasticsearch/visibility/cluster_settings_v7.json"
|
|
TEMPLATE_FILE="schema/elasticsearch/visibility/index_template_${ES_VERSION}.json"
|
|
|
|
if [ ! -f "$TEMPLATE_FILE" ]; then
|
|
echo "Error: Template file not found: $TEMPLATE_FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
FAIL_SILENTLY="false"
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
--fail)
|
|
FAIL_SILENTLY="true"
|
|
shift
|
|
;;
|
|
*)
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Setup cluster settings if file exists
|
|
if [ -f "$CLUSTER_SETTINGS_FILE" ]; then
|
|
echo "Setting up cluster settings..."
|
|
curl_request "PUT" "/_cluster/settings" "$CLUSTER_SETTINGS_FILE" "$FAIL_SILENTLY" >/dev/null
|
|
echo "Cluster settings setup complete"
|
|
else
|
|
echo "Warning: Cluster settings file not found: $CLUSTER_SETTINGS_FILE, skipping cluster settings"
|
|
fi
|
|
|
|
echo "Setting up index template..."
|
|
curl_request "PUT" "/_template/temporal_visibility_v1_template" "$TEMPLATE_FILE" "$FAIL_SILENTLY" >/dev/null
|
|
echo "Template setup complete"
|
|
;;
|
|
|
|
update-schema)
|
|
# Update index template and optionally index mappings
|
|
if [ -z "$ES_VERSION" ]; then
|
|
echo "Error: ES_VERSION environment variable is required" >&2
|
|
exit 1
|
|
fi
|
|
|
|
TEMPLATE_FILE="schema/elasticsearch/visibility/index_template_${ES_VERSION}.json"
|
|
if [ ! -f "$TEMPLATE_FILE" ]; then
|
|
echo "Error: Template file not found: $TEMPLATE_FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
INDEX_NAME=""
|
|
FAIL_SILENTLY="false"
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
--index)
|
|
shift
|
|
INDEX_NAME="$1"
|
|
shift
|
|
;;
|
|
--fail)
|
|
FAIL_SILENTLY="true"
|
|
shift
|
|
;;
|
|
*)
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo "Updating index template..."
|
|
curl_request "PUT" "/_template/temporal_visibility_v1_template" "$TEMPLATE_FILE" "$FAIL_SILENTLY" >/dev/null
|
|
|
|
if [ -n "$INDEX_NAME" ]; then
|
|
echo "Updating index mappings for $INDEX_NAME..."
|
|
|
|
# Check if index exists
|
|
HTTP_CODE=$(curl --head --silent --write-out "%{http_code}" --output /dev/null ${CURL_AUTH} ${ES_URL}/${INDEX_NAME} 2>/dev/null)
|
|
if [ "$HTTP_CODE" != "200" ]; then
|
|
echo "Error: Index $INDEX_NAME does not exist" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Extract mappings from template using jq
|
|
MAPPINGS=$(jq -c '.mappings' "$TEMPLATE_FILE")
|
|
if [ -z "$MAPPINGS" ] || [ "$MAPPINGS" = "null" ]; then
|
|
echo "Error: No mappings found in template file" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Create temporary file with mappings
|
|
MAPPINGS_FILE=$(mktemp)
|
|
echo "$MAPPINGS" > "$MAPPINGS_FILE"
|
|
|
|
# Update index mappings
|
|
curl_request "PUT" "/${INDEX_NAME}/_mapping" "$MAPPINGS_FILE" "$FAIL_SILENTLY" >/dev/null
|
|
|
|
# Clean up temporary file
|
|
rm -f "$MAPPINGS_FILE"
|
|
|
|
echo "Index mappings updated successfully"
|
|
fi
|
|
echo "Schema update complete"
|
|
;;
|
|
|
|
create-index)
|
|
# Create visibility index
|
|
INDEX_NAME=""
|
|
FAIL_SILENTLY="false"
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
--index)
|
|
shift
|
|
INDEX_NAME="$1"
|
|
shift
|
|
;;
|
|
--fail)
|
|
FAIL_SILENTLY="true"
|
|
shift
|
|
;;
|
|
*)
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Use ES_VISIBILITY_INDEX env var if --index not provided
|
|
if [ -z "$INDEX_NAME" ]; then
|
|
INDEX_NAME="$ES_VISIBILITY_INDEX"
|
|
fi
|
|
|
|
if [ -z "$INDEX_NAME" ]; then
|
|
echo "Error: Index name required (use --index or ES_VISIBILITY_INDEX env var)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Check if index already exists
|
|
HTTP_CODE=$(curl --head --silent --write-out "%{http_code}" --output /dev/null ${CURL_AUTH} ${ES_URL}/${INDEX_NAME} 2>/dev/null)
|
|
if [ "$HTTP_CODE" = "200" ]; then
|
|
echo "Index $INDEX_NAME already exists, skipping creation"
|
|
exit 0
|
|
fi
|
|
|
|
echo "Creating index $INDEX_NAME..."
|
|
# Create the index, handling the case where it already exists
|
|
# (as a fallback if the HEAD check above didn't catch it)
|
|
CREATE_OUTPUT=$(curl -X PUT --silent --show-error --write-out "\n%{http_code}" ${CURL_AUTH} ${ES_URL}/${INDEX_NAME} -H "Content-Type: application/json" 2>&1)
|
|
HTTP_CODE=$(echo "$CREATE_OUTPUT" | tail -n1)
|
|
CREATE_BODY=$(echo "$CREATE_OUTPUT" | head -n-1)
|
|
|
|
if [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "201" ]; then
|
|
echo "Index created successfully"
|
|
elif [ "$HTTP_CODE" = "400" ] && echo "$CREATE_BODY" | jq -e '.error.type == "resource_already_exists_exception"' >/dev/null 2>&1; then
|
|
echo "Index $INDEX_NAME already exists, skipping creation"
|
|
exit 0
|
|
else
|
|
if [ "$FAIL_SILENTLY" != "true" ]; then
|
|
echo "Error: Failed to create index (HTTP $HTTP_CODE): $CREATE_BODY" >&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
;;
|
|
|
|
drop-index)
|
|
# Delete visibility index
|
|
INDEX_NAME=""
|
|
FAIL_SILENTLY="false"
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
--index)
|
|
shift
|
|
INDEX_NAME="$1"
|
|
shift
|
|
;;
|
|
--fail)
|
|
FAIL_SILENTLY="true"
|
|
shift
|
|
;;
|
|
*)
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Use ES_VISIBILITY_INDEX env var if --index not provided
|
|
if [ -z "$INDEX_NAME" ]; then
|
|
INDEX_NAME="$ES_VISIBILITY_INDEX"
|
|
fi
|
|
|
|
if [ -z "$INDEX_NAME" ]; then
|
|
echo "Error: Index name required (use --index or ES_VISIBILITY_INDEX env var)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Dropping index $INDEX_NAME..."
|
|
curl_request "DELETE" "/${INDEX_NAME}" "" "$FAIL_SILENTLY" >/dev/null
|
|
echo "Index dropped successfully"
|
|
;;
|
|
|
|
ping)
|
|
# Ping elasticsearch host
|
|
echo "Pinging Elasticsearch at ${ES_URL}..."
|
|
if curl --fail --silent --show-error ${CURL_AUTH} ${ES_URL} >/dev/null 2>&1; then
|
|
echo "Pong - Elasticsearch is reachable"
|
|
exit 0
|
|
else
|
|
echo "Ping failed - Elasticsearch is not reachable" >&2
|
|
exit 1
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: $0 {setup-schema|update-schema|create-index|drop-index|ping} [options]" >&2
|
|
echo "" >&2
|
|
echo "Commands:" >&2
|
|
echo " setup-schema Setup elasticsearch index template" >&2
|
|
echo " update-schema Update elasticsearch index template (and optionally index mappings with --index)" >&2
|
|
echo " create-index Create elasticsearch visibility index" >&2
|
|
echo " drop-index Delete elasticsearch visibility index" >&2
|
|
echo " ping Ping the elasticsearch host" >&2
|
|
echo "" >&2
|
|
echo "Environment variables:" >&2
|
|
echo " ES_SCHEME, ES_HOST, ES_PORT, ES_USER, ES_PWD, ES_VERSION, ES_VISIBILITY_INDEX" >&2
|
|
exit 1
|
|
;;
|
|
esac
|