diff --git a/bin/chart-diff b/bin/chart-diff deleted file mode 100755 index 304188f..0000000 --- a/bin/chart-diff +++ /dev/null @@ -1,69 +0,0 @@ -#!/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" \ No newline at end of file diff --git a/bin/chart-install b/bin/chart-install deleted file mode 100755 index 7d110dc..0000000 --- a/bin/chart-install +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/bash -# chart-install -# Installs a Helm chart using gomplate for templating values -# Usage: chart-install CHART [RELEASE_NAME] [NAMESPACE] [--dry-run] - -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] [--dry-run]" - echo "" - echo "Install or upgrade a chart with environment variable substitution." - 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 "Options:" - echo " --dry-run Show what would be installed without actually installing" - echo "" - exit 1 -fi - -# Check for dry run flag -DRY_RUN=false -for arg in "$@"; do - if [ "$arg" == "--dry-run" ]; then - DRY_RUN=true - fi -done - -CHART="$1" -RELEASE_NAME="${2:-$CHART}" -NAMESPACE="${3:-$RELEASE_NAME}" - -# 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 - -# Update chart dependencies if Chart.yaml has dependencies section -if [ -f "${CHART_PATH}/Chart.yaml" ] && grep -q "dependencies:" "${CHART_PATH}/Chart.yaml"; then - echo "Updating dependencies for chart: $CHART" - helm dependency update "$CHART_PATH" -fi - -# We'll use chart-template for values, so we don't need to check here - -# Create namespace (unless --dry-run was specified) -if [ "$DRY_RUN" == "false" ]; then - kubectl create namespace "$NAMESPACE" --dry-run=client -o yaml | kubectl apply -f - -fi - -# Run the helm command -echo "Installing chart: $CHART as $RELEASE_NAME in namespace $NAMESPACE" - -if [ "$DRY_RUN" == "true" ]; then - echo "==> DRY RUN: Would install the following resources:" - "${SCRIPT_DIR}/chart-template" "$CHART" "$RELEASE_NAME" "$NAMESPACE" - exit 0 -fi - -# For actual installation, create a temporary file to capture template output -TEMP_OUTPUT=$(mktemp) -"${SCRIPT_DIR}/chart-template" "$CHART" "$RELEASE_NAME" "$NAMESPACE" > "$TEMP_OUTPUT" - -# Apply the template to the cluster -kubectl apply -f "$TEMP_OUTPUT" - -# Clean up -rm "$TEMP_OUTPUT" - -# Print helpful information (if not dry run) -if [ "$DRY_RUN" == "false" ]; then - echo "" - echo "✅ Successfully installed/upgraded $RELEASE_NAME in namespace $NAMESPACE" - echo "" - echo "To check the status:" - echo " kubectl get all -n $NAMESPACE -l app.kubernetes.io/instance=$RELEASE_NAME" - echo "" -fi - -# Check for post-install instructions (only if not dry run) -if [ "$DRY_RUN" == "false" ]; then - INSTRUCTIONS_FILE="${CHART_PATH}/POST_INSTALL_NOTES.txt" - if [[ -f "$INSTRUCTIONS_FILE" ]]; then - # Process environment variables in instructions (using the same environment) - echo "" - echo "Post-installation instructions:" - echo "===============================" - gomplate -f "$INSTRUCTIONS_FILE" - else - echo "For more information, see the documentation in ${CHART_PATH}/README.md" - fi -fi \ No newline at end of file diff --git a/bin/chart-template b/bin/chart-template deleted file mode 100755 index ced9043..0000000 --- a/bin/chart-template +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash -# chart-template -# Renders the template for a Helm chart using gomplate for values files -# Usage: chart-template 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 [[ -f "${REPO_ROOT}/load-env.sh" ]]; then - source "${REPO_ROOT}/load-env.sh" -fi - -# Print usage -if [[ $# -lt 1 || "$1" == "-h" || "$1" == "--help" ]]; then - echo "Usage: $(basename $0) CHART [RELEASE_NAME] [NAMESPACE]" - echo "" - echo "Renders the Kubernetes templates for a chart with environment variable substitution." - echo "" - echo " CHART Chart name in charts/ directory" - echo " RELEASE_NAME Release name (defaults to CHART)" - echo " NAMESPACE Namespace (defaults to RELEASE_NAME)" - echo "" - exit 1 -fi - -CHART="$1" -RELEASE_NAME="${2:-$CHART}" -NAMESPACE="${3:-$RELEASE_NAME}" - -# 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 - -# Check if template values file exists -TPL_VALUES_FILE="${CHART_PATH}/values.template.yaml" -if [[ ! -f "$TPL_VALUES_FILE" ]]; then - echo "Error: Template values file not found at ${TPL_VALUES_FILE}" - exit 1 -fi - -# Set variables needed for template -export RELEASE_NAME="$RELEASE_NAME" -export NAMESPACE="$NAMESPACE" -export CHART="$CHART" - -# No headers - just let helm template output the YAML - -# Create temporary values file with gomplate -TEMP_VALUES=$(mktemp) -gomplate -f "$TPL_VALUES_FILE" > "$TEMP_VALUES" - -# Run helm template -helm template "$RELEASE_NAME" "$CHART_PATH" \ - --namespace "$NAMESPACE" \ - --values "$TEMP_VALUES" - -# Clean up -rm "$TEMP_VALUES" \ No newline at end of file