initial commit
All checks were successful
Build and Push Image / build-and-push (push) Successful in 1m26s

This commit is contained in:
Michael Trip 2026-01-09 21:58:53 +01:00
parent 3bba1f6db6
commit b56e866071
36 changed files with 4160 additions and 0 deletions

215
deploy.sh Normal file
View file

@ -0,0 +1,215 @@
#!/bin/bash
# Deployment script voor Kubernetes
set -e
# Kleuren voor output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Functies
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Variabelen
NAMESPACE="snauw-counter"
IMAGE_TAG="${IMAGE_TAG:-latest}"
CONTEXT="${KUBE_CONTEXT:-default}"
# Help functie
show_help() {
cat << EOF
Snauw Counter Kubernetes Deployment Script
USAGE:
$0 [COMMAND] [OPTIONS]
COMMANDS:
deploy Deploy application to Kubernetes
status Show deployment status
logs Show application logs
scale Scale deployment
rollback Rollback to previous version
cleanup Remove deployment
OPTIONS:
-t, --tag Docker image tag (default: latest)
-c, --context Kubernetes context (default: default)
-n, --namespace Kubernetes namespace (default: snauw-counter)
-h, --help Show this help
EXAMPLES:
$0 deploy -t v1.0.0
$0 scale 5
$0 logs -f
$0 rollback
EOF
}
# Deploy functie
deploy() {
log_info "Deploying Snauw Counter to Kubernetes..."
# Check if namespace exists
if ! kubectl get namespace $NAMESPACE &> /dev/null; then
log_info "Creating namespace $NAMESPACE"
kubectl apply -f k8s/namespace.yaml
fi
# Apply manifests
log_info "Applying ConfigMap and Secrets..."
kubectl apply -f k8s/configmap.yaml
log_info "Creating SQLite PVC..."
kubectl apply -f k8s/sqlite-pvc.yaml
log_info "Deploying application..."
export IMAGE_TAG=$IMAGE_TAG
envsubst < k8s/deployment.yaml | kubectl apply -f -
kubectl apply -f k8s/service.yaml
kubectl apply -f k8s/ingress.yaml
kubectl apply -f k8s/scaling.yaml
# Wait for deployment
log_info "Waiting for deployment to be ready..."
kubectl rollout status deployment/snauw-counter -n $NAMESPACE --timeout=300s
log_success "Deployment completed successfully!"
}
# Status functie
status() {
log_info "Checking deployment status..."
echo "=== NAMESPACE ==="
kubectl get namespace $NAMESPACE
echo -e "\n=== DEPLOYMENTS ==="
kubectl get deployments -n $NAMESPACE
echo -e "\n=== PODS ==="
kubectl get pods -n $NAMESPACE
echo -e "\n=== SERVICES ==="
kubectl get services -n $NAMESPACE
echo -e "\n=== INGRESS ==="
kubectl get ingress -n $NAMESPACE
echo -e "\n=== HPA ==="
kubectl get hpa -n $NAMESPACE
}
# Logs functie
logs() {
FOLLOW_FLAG=""
if [[ "$1" == "-f" ]]; then
FOLLOW_FLAG="-f"
fi
log_info "Showing application logs..."
kubectl logs -l app.kubernetes.io/name=snauw-counter -n $NAMESPACE $FOLLOW_FLAG
}
# Scale functie
scale() {
REPLICAS=${1:-2}
log_info "Scaling deployment to $REPLICAS replicas..."
kubectl scale deployment/snauw-counter --replicas=$REPLICAS -n $NAMESPACE
kubectl rollout status deployment/snauw-counter -n $NAMESPACE
log_success "Scaled to $REPLICAS replicas"
}
# Rollback functie
rollback() {
log_info "Rolling back to previous version..."
kubectl rollout undo deployment/snauw-counter -n $NAMESPACE
kubectl rollout status deployment/snauw-counter -n $NAMESPACE
log_success "Rollback completed"
}
# Cleanup functie
cleanup() {
log_warning "This will remove all Snauw Counter resources from Kubernetes"
read -p "Are you sure? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
log_info "Removing deployment..."
kubectl delete namespace $NAMESPACE
log_success "Cleanup completed"
else
log_info "Cleanup cancelled"
fi
}
# Main script
case "$1" in
deploy)
shift
while [[ $# -gt 0 ]]; do
case $1 in
-t|--tag)
IMAGE_TAG="$2"
shift 2
;;
-c|--context)
CONTEXT="$2"
kubectl config use-context $CONTEXT
shift 2
;;
-n|--namespace)
NAMESPACE="$2"
shift 2
;;
*)
log_error "Unknown option: $1"
show_help
exit 1
;;
esac
done
deploy
;;
status)
status
;;
logs)
shift
logs "$@"
;;
scale)
shift
scale "$@"
;;
rollback)
rollback
;;
cleanup)
cleanup
;;
-h|--help)
show_help
;;
*)
log_error "Unknown command: $1"
show_help
exit 1
;;
esac