Django options pulled out into configmap; Docker build should now succeed despite no ENV-var with secret
Some checks failed
Build containers when image tags change / build-if-image-changed (., web, containers, main container, git.baumann.gr/adebaumann/vui) (push) Successful in 39s
Build containers when image tags change / build-if-image-changed (data-loader, loader, initContainers, init-container, git.baumann.gr/adebaumann/vui-data-loader) (push) Successful in 4s
SonarQube Scan / SonarQube Trigger (push) Failing after 47s
Some checks failed
Build containers when image tags change / build-if-image-changed (., web, containers, main container, git.baumann.gr/adebaumann/vui) (push) Successful in 39s
Build containers when image tags change / build-if-image-changed (data-loader, loader, initContainers, init-container, git.baumann.gr/adebaumann/vui-data-loader) (push) Successful in 4s
SonarQube Scan / SonarQube Trigger (push) Failing after 47s
This commit is contained in:
216
scripts/deploy-argocd-configmap.sh
Executable file
216
scripts/deploy-argocd-configmap.sh
Executable file
@@ -0,0 +1,216 @@
|
||||
#!/bin/bash
|
||||
|
||||
# deploy-argocd-configmap.sh
|
||||
# Script to deploy Django ConfigMap to vorgabenui namespace for ArgoCD
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# ArgoCD-specific configuration (hardcoded for consistency)
|
||||
NAMESPACE="vorgabenui"
|
||||
CONFIGMAP_NAME="django-config"
|
||||
SCRIPT_DIR="$(dirname "$0")"
|
||||
ARGOCD_DIR="$SCRIPT_DIR/../argocd"
|
||||
CONFIGMAP_FILE="$ARGOCD_DIR/configmap.yaml"
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Logging functions
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
log_step() {
|
||||
echo -e "${BLUE}[STEP]${NC} $1"
|
||||
}
|
||||
|
||||
# Function to check if kubectl is available
|
||||
check_kubectl() {
|
||||
if ! command -v kubectl &> /dev/null; then
|
||||
log_error "kubectl is not installed or not in PATH"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to check if configmap file exists
|
||||
check_configmap_file() {
|
||||
if [ ! -f "$CONFIGMAP_FILE" ]; then
|
||||
log_error "ConfigMap file not found: $CONFIGMAP_FILE"
|
||||
log_error "Expected ArgoCD ConfigMap file at: $CONFIGMAP_FILE"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to deploy the configmap
|
||||
deploy_configmap() {
|
||||
log_step "Deploying ConfigMap '$CONFIGMAP_NAME' to namespace '$NAMESPACE'..."
|
||||
|
||||
kubectl apply -f "$CONFIGMAP_FILE"
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
log_info "Successfully deployed ConfigMap '$CONFIGMAP_NAME'"
|
||||
return 0
|
||||
else
|
||||
log_error "Failed to deploy ConfigMap '$CONFIGMAP_NAME'"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to verify the configmap
|
||||
verify_configmap() {
|
||||
log_step "Verifying ConfigMap deployment..."
|
||||
|
||||
if kubectl get configmap "$CONFIGMAP_NAME" --namespace="$NAMESPACE" &> /dev/null; then
|
||||
log_info "✅ ConfigMap '$CONFIGMAP_NAME' exists in namespace '$NAMESPACE'"
|
||||
|
||||
echo ""
|
||||
log_info "ConfigMap details:"
|
||||
kubectl describe configmap "$CONFIGMAP_NAME" --namespace="$NAMESPACE"
|
||||
|
||||
echo ""
|
||||
log_info "ConfigMap data:"
|
||||
kubectl get configmap "$CONFIGMAP_NAME" --namespace="$NAMESPACE" -o yaml | grep -A 20 "^data:"
|
||||
|
||||
return 0
|
||||
else
|
||||
log_error "❌ ConfigMap '$CONFIGMAP_NAME' not found in namespace '$NAMESPACE'"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to show usage
|
||||
show_usage() {
|
||||
echo "ArgoCD ConfigMap Deployment Script for VorgabenUI"
|
||||
echo ""
|
||||
echo "Usage: $0 [OPTIONS]"
|
||||
echo ""
|
||||
echo "This script deploys Django configuration to the vorgabenui namespace for ArgoCD."
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message"
|
||||
echo " --verify-only Only verify existing ConfigMap, don't deploy"
|
||||
echo " --dry-run Show what would be deployed without applying"
|
||||
echo ""
|
||||
echo "Configuration (hardcoded for ArgoCD):"
|
||||
echo " Namespace: $NAMESPACE"
|
||||
echo " ConfigMap Name: $CONFIGMAP_NAME"
|
||||
echo " ConfigMap File: $CONFIGMAP_FILE"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 # Deploy ConfigMap"
|
||||
echo " $0 --verify-only # Verify existing ConfigMap"
|
||||
echo " $0 --dry-run # Preview deployment"
|
||||
echo ""
|
||||
echo "Note: Run this before deploying the ArgoCD deployment to ensure configuration is available."
|
||||
}
|
||||
|
||||
# Parse command line arguments
|
||||
VERIFY_ONLY=false
|
||||
DRY_RUN=false
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--verify-only)
|
||||
VERIFY_ONLY=true
|
||||
shift
|
||||
;;
|
||||
--dry-run)
|
||||
DRY_RUN=true
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
show_usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
log_error "Unknown option: $1"
|
||||
show_usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Main execution
|
||||
main() {
|
||||
echo ""
|
||||
log_info "🚀 ArgoCD Django ConfigMap Deployment Script"
|
||||
log_info "============================================"
|
||||
echo ""
|
||||
log_info "Target Configuration:"
|
||||
log_info " Namespace: $NAMESPACE"
|
||||
log_info " ConfigMap Name: $CONFIGMAP_NAME"
|
||||
log_info " ConfigMap File: $CONFIGMAP_FILE"
|
||||
echo ""
|
||||
|
||||
# Perform checks
|
||||
log_step "Performing pre-flight checks..."
|
||||
check_kubectl
|
||||
check_configmap_file
|
||||
log_info "✅ All pre-flight checks passed"
|
||||
echo ""
|
||||
|
||||
# Verify-only mode
|
||||
if [ "$VERIFY_ONLY" = true ]; then
|
||||
log_info "🔍 Verify-only mode - checking existing ConfigMap"
|
||||
verify_configmap
|
||||
exit $?
|
||||
fi
|
||||
|
||||
# Dry-run mode
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
log_info "🔍 Dry-run mode - showing what would be deployed:"
|
||||
echo ""
|
||||
log_info "ConfigMap content that would be deployed:"
|
||||
cat "$CONFIGMAP_FILE"
|
||||
echo ""
|
||||
log_info "Would run: kubectl apply -f $CONFIGMAP_FILE"
|
||||
echo ""
|
||||
log_info "Run without --dry-run to execute the deployment"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Create namespace if it doesn't exist
|
||||
if ! kubectl get namespace "$NAMESPACE" &> /dev/null; then
|
||||
log_warn "Namespace '$NAMESPACE' does not exist, creating..."
|
||||
kubectl create namespace "$NAMESPACE"
|
||||
log_info "✅ Created namespace '$NAMESPACE'"
|
||||
fi
|
||||
|
||||
# Deploy the ConfigMap
|
||||
if deploy_configmap; then
|
||||
echo ""
|
||||
# Verify deployment
|
||||
verify_configmap
|
||||
echo ""
|
||||
|
||||
log_info "🎉 ConfigMap deployment completed successfully!"
|
||||
echo ""
|
||||
log_info "📋 Next steps:"
|
||||
log_info "1. Deploy the secret (if not already done):"
|
||||
echo " ./scripts/deploy-argocd-secret.sh"
|
||||
echo ""
|
||||
log_info "2. Apply the updated deployment:"
|
||||
echo " kubectl apply -f argocd/deployment.yaml"
|
||||
echo ""
|
||||
log_info "3. Verify Django pods start with proper configuration"
|
||||
echo ""
|
||||
else
|
||||
log_error "ConfigMap deployment failed"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Run main function
|
||||
main
|
||||
Reference in New Issue
Block a user