40 lines
1.4 KiB
Bash
40 lines
1.4 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# Deploy script for k3s cluster
|
||
|
|
# Run this on the k3s master node after pulling latest code
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
NAMESPACE="student-enrollment"
|
||
|
|
PROJECT_DIR="/home/andres/student-enrollment"
|
||
|
|
TAG=$(git -C "$PROJECT_DIR" rev-parse --short HEAD)
|
||
|
|
|
||
|
|
echo "=== Deploying commit $TAG to k3s ==="
|
||
|
|
|
||
|
|
cd "$PROJECT_DIR"
|
||
|
|
git pull
|
||
|
|
|
||
|
|
echo "=== Building API image ==="
|
||
|
|
sudo docker build -t student-api:$TAG -f deploy/docker/Dockerfile.api .
|
||
|
|
|
||
|
|
echo "=== Building Frontend image ==="
|
||
|
|
sudo docker build -t student-frontend:$TAG -f deploy/docker/Dockerfile.frontend .
|
||
|
|
|
||
|
|
echo "=== Importing images to k3s ==="
|
||
|
|
sudo docker save student-api:$TAG | sudo k3s ctr images import -
|
||
|
|
sudo docker save student-frontend:$TAG | sudo k3s ctr images import -
|
||
|
|
|
||
|
|
echo "=== Updating deployments ==="
|
||
|
|
sudo kubectl -n $NAMESPACE set image deployment/student-api api=student-api:$TAG
|
||
|
|
sudo kubectl -n $NAMESPACE set image deployment/student-frontend frontend=student-frontend:$TAG
|
||
|
|
|
||
|
|
echo "=== Waiting for rollout ==="
|
||
|
|
sudo kubectl -n $NAMESPACE rollout status deployment/student-api --timeout=120s
|
||
|
|
sudo kubectl -n $NAMESPACE rollout status deployment/student-frontend --timeout=60s
|
||
|
|
|
||
|
|
echo "=== Health check ==="
|
||
|
|
sleep 5
|
||
|
|
API_POD=$(sudo kubectl -n $NAMESPACE get pods -l app=student-api -o jsonpath='{.items[0].metadata.name}')
|
||
|
|
sudo kubectl -n $NAMESPACE exec $API_POD -- wget -q --spider http://localhost:5000/health
|
||
|
|
|
||
|
|
echo "=== Deploy complete! Tag: $TAG ==="
|