69 lines
2.0 KiB
Bash
Executable File
69 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# chart-diff
|
|
# Shows differences between current and new chart version using gomplate for values
|
|
# Usage: chart-diff CHART [RELEASE_NAME] [NAMESPACE]
|
|
|
|
set -e
|
|
|
|
# Get script directories
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
|
|
# Load environment variables if needed
|
|
if [[ -z "$ENVIRONMENT" ]]; then
|
|
if [[ -f "${REPO_ROOT}/load-env.sh" ]]; then
|
|
source "${REPO_ROOT}/load-env.sh"
|
|
fi
|
|
fi
|
|
|
|
# Print usage
|
|
if [[ $# -lt 1 || "$1" == "-h" || "$1" == "--help" ]]; then
|
|
echo "Usage: $(basename $0) CHART [RELEASE_NAME] [NAMESPACE]"
|
|
echo ""
|
|
echo "Shows differences between current and new chart version."
|
|
echo ""
|
|
echo " CHART Chart name in charts/ directory"
|
|
echo " RELEASE_NAME Release name (defaults to CHART)"
|
|
echo " NAMESPACE Namespace (defaults to RELEASE_NAME)"
|
|
echo ""
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
|
|
CHART="$1"
|
|
RELEASE_NAME="${2:-$CHART}"
|
|
NAMESPACE="${3:-$RELEASE_NAME}"
|
|
|
|
# We use kubectl diff now, no need for helm-diff plugin
|
|
|
|
# Check if chart exists
|
|
CHART_PATH="${REPO_ROOT}/charts/${CHART}"
|
|
if [[ ! -d "$CHART_PATH" ]]; then
|
|
echo "Error: Chart not found at ${CHART_PATH}"
|
|
exit 1
|
|
fi
|
|
|
|
# We'll use chart-template for values, so we don't need to check here
|
|
|
|
# Show what would change
|
|
echo "==> Showing differences for chart: $CHART"
|
|
echo "==> Release name: $RELEASE_NAME"
|
|
echo "==> Namespace: $NAMESPACE"
|
|
echo ""
|
|
|
|
# Create temporary files for the template output
|
|
TEMP_OUTPUT=$(mktemp)
|
|
CLEAN_OUTPUT=$(mktemp)
|
|
|
|
# Generate the template and filter out the header text
|
|
"${SCRIPT_DIR}/chart-template" "$CHART" "$RELEASE_NAME" "$NAMESPACE" > "$TEMP_OUTPUT"
|
|
sed -n '/^---$/,$p' "$TEMP_OUTPUT" > "$CLEAN_OUTPUT"
|
|
|
|
# Use kubectl diff to show actual differences between current state and template
|
|
echo "==> Showing differences between current cluster state and template for $CHART:"
|
|
echo "==> (+ indicates additions, - indicates removals)"
|
|
echo ""
|
|
kubectl diff -f "$CLEAN_OUTPUT" || true
|
|
|
|
# Clean up
|
|
rm "$TEMP_OUTPUT" "$CLEAN_OUTPUT" |