mirror of
https://github.com/wahyd4/passkey-auth.git
synced 2026-08-08 20:15:44 +10:00
129 lines
3.8 KiB
Bash
Executable File
129 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Helm Chart Validation Script
|
|
# This script validates the Helm chart before deployment
|
|
|
|
set -e
|
|
|
|
CHART_DIR="helm/passkey-auth"
|
|
NAMESPACE="passkey-auth-test"
|
|
|
|
echo "🔍 Validating Passkey Auth Helm Chart..."
|
|
|
|
# Check if helm is installed
|
|
if ! command -v helm &> /dev/null; then
|
|
echo "❌ Helm is not installed. Please install Helm first."
|
|
exit 1
|
|
fi
|
|
|
|
# Check if kubectl is installed
|
|
if ! command -v kubectl &> /dev/null; then
|
|
echo "❌ kubectl is not installed. Please install kubectl first."
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Prerequisites check passed"
|
|
|
|
# Lint the chart
|
|
echo "🔧 Linting Helm chart..."
|
|
if helm lint $CHART_DIR; then
|
|
echo "✅ Chart linting passed"
|
|
else
|
|
echo "❌ Chart linting failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Template the chart with test values
|
|
echo "📝 Templating chart with test values..."
|
|
helm template test-release $CHART_DIR \
|
|
--set config.webauthn.rpId=test.example.com \
|
|
--set config.webauthn.rpOrigins="{https://test.example.com}" \
|
|
--set config.cors.allowedOrigins="{https://test.example.com}" \
|
|
--set config.auth.cookieDomain=".example.com" \
|
|
--set config.auth.allowedEmails="{admin@example.com}" \
|
|
--set secrets.sessionSecret="test-secret-for-validation-only" \
|
|
--set ingress.hosts[0].host=test.example.com \
|
|
--set ingress.tls[0].hosts="{test.example.com}" \
|
|
> /tmp/passkey-auth-template.yaml
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Chart templating passed"
|
|
else
|
|
echo "❌ Chart templating failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Validate Kubernetes manifests
|
|
echo "🔍 Validating Kubernetes manifests..."
|
|
if kubectl apply --dry-run=client -f /tmp/passkey-auth-template.yaml; then
|
|
echo "✅ Kubernetes manifest validation passed"
|
|
else
|
|
echo "❌ Kubernetes manifest validation failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Check for required values
|
|
echo "🔧 Checking for required configuration..."
|
|
|
|
REQUIRED_VALUES=(
|
|
"config.webauthn.rpId"
|
|
"config.webauthn.rpOrigins"
|
|
"secrets.sessionSecret"
|
|
)
|
|
|
|
for value in "${REQUIRED_VALUES[@]}"; do
|
|
if helm template test-release $CHART_DIR --show-only templates/configmap.yaml | grep -q "REQUIRED"; then
|
|
echo "❌ Required value not set: $value"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
echo "✅ Required values check passed"
|
|
|
|
# Test with production values
|
|
if [ -f "$CHART_DIR/examples/values-production.yaml" ]; then
|
|
echo "🏭 Testing with production values..."
|
|
helm template test-release $CHART_DIR \
|
|
-f $CHART_DIR/examples/values-production.yaml \
|
|
--set secrets.sessionSecret="test-secret" \
|
|
> /tmp/passkey-auth-production.yaml
|
|
|
|
if kubectl apply --dry-run=client -f /tmp/passkey-auth-production.yaml; then
|
|
echo "✅ Production values validation passed"
|
|
else
|
|
echo "❌ Production values validation failed"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Test with development values
|
|
if [ -f "$CHART_DIR/examples/values-development.yaml" ]; then
|
|
echo "🚀 Testing with development values..."
|
|
helm template test-release $CHART_DIR \
|
|
-f $CHART_DIR/examples/values-development.yaml \
|
|
> /tmp/passkey-auth-development.yaml
|
|
|
|
if kubectl apply --dry-run=client -f /tmp/passkey-auth-development.yaml; then
|
|
echo "✅ Development values validation passed"
|
|
else
|
|
echo "❌ Development values validation failed"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Cleanup
|
|
rm -f /tmp/passkey-auth-*.yaml
|
|
|
|
echo "🎉 All validations passed! The Helm chart is ready for deployment."
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo "1. Update values in values.yaml or use --set flags"
|
|
echo "2. Install the chart: helm install my-passkey-auth $CHART_DIR"
|
|
echo "3. Configure your ingress controllers to use the auth backend"
|
|
echo ""
|
|
echo "For production deployment, make sure to:"
|
|
echo "• Set a secure session secret"
|
|
echo "• Configure proper domains and origins"
|
|
echo "• Set up TLS certificates"
|
|
echo "• Configure allowed email addresses"
|