initial commit
All checks were successful
Build and Push Image / build-and-push (push) Successful in 1m26s
All checks were successful
Build and Push Image / build-and-push (push) Successful in 1m26s
This commit is contained in:
parent
3bba1f6db6
commit
b56e866071
36 changed files with 4160 additions and 0 deletions
215
deploy.sh
Normal file
215
deploy.sh
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue