Files
infrastructure/clusters/cl01tl/manifests/postiz/ConfigMap-postiz-temporal-shims.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