100 lines
2.4 KiB
Bash
100 lines
2.4 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# Deployment script for MyOrg Assistant to k3s
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
echo "🚀 Deploying MyOrg Assistant to k3s..."
|
||
|
|
|
||
|
|
# Check if kubectl is available
|
||
|
|
if ! command -v kubectl &> /dev/null; then
|
||
|
|
echo "❌ kubectl not found. Please install kubectl first."
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Check if we're connected to the cluster
|
||
|
|
if ! kubectl cluster-info &> /dev/null; then
|
||
|
|
echo "❌ Cannot connect to k3s cluster. Please check your kubeconfig."
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "✅ Connected to k3s cluster"
|
||
|
|
|
||
|
|
# Build Docker image
|
||
|
|
echo ""
|
||
|
|
echo "📦 Building Docker image..."
|
||
|
|
cd ..
|
||
|
|
docker build -t myorg-assistant:latest .
|
||
|
|
|
||
|
|
# Load image into k3s (if using k3s)
|
||
|
|
echo ""
|
||
|
|
echo "📥 Loading image into k3s..."
|
||
|
|
if command -v k3s &> /dev/null; then
|
||
|
|
docker save myorg-assistant:latest | sudo k3s ctr images import -
|
||
|
|
else
|
||
|
|
echo "⚠️ k3s command not found, assuming image is already available"
|
||
|
|
fi
|
||
|
|
|
||
|
|
cd k8s
|
||
|
|
|
||
|
|
# Check if secret exists
|
||
|
|
if kubectl get secret myorg-assistant-secret &> /dev/null; then
|
||
|
|
echo ""
|
||
|
|
echo "✅ Secret already exists"
|
||
|
|
else
|
||
|
|
echo ""
|
||
|
|
echo "⚠️ Secret not found!"
|
||
|
|
echo "Please create k8s/secret.yaml from k8s/secret.yaml.example and apply it:"
|
||
|
|
echo " cp secret.yaml.example secret.yaml"
|
||
|
|
echo " # Edit secret.yaml with your credentials"
|
||
|
|
echo " kubectl apply -f secret.yaml"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Apply manifests
|
||
|
|
echo ""
|
||
|
|
echo "📝 Applying Kubernetes manifests..."
|
||
|
|
|
||
|
|
echo " - ConfigMap..."
|
||
|
|
kubectl apply -f configmap.yaml
|
||
|
|
|
||
|
|
echo " - PersistentVolumeClaim..."
|
||
|
|
kubectl apply -f pvc.yaml
|
||
|
|
|
||
|
|
echo " - Service..."
|
||
|
|
kubectl apply -f service.yaml
|
||
|
|
|
||
|
|
echo " - Deployment..."
|
||
|
|
kubectl apply -f deployment.yaml
|
||
|
|
|
||
|
|
echo " - CronJobs..."
|
||
|
|
kubectl apply -f cronjobs/
|
||
|
|
|
||
|
|
# Wait for deployment
|
||
|
|
echo ""
|
||
|
|
echo "⏳ Waiting for deployment to be ready..."
|
||
|
|
kubectl rollout status deployment/myorg-assistant --timeout=300s
|
||
|
|
|
||
|
|
# Show status
|
||
|
|
echo ""
|
||
|
|
echo "✅ Deployment complete!"
|
||
|
|
echo ""
|
||
|
|
echo "📊 Status:"
|
||
|
|
kubectl get pods -l app=myorg-assistant
|
||
|
|
echo ""
|
||
|
|
kubectl get svc myorg-assistant-service
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Show logs
|
||
|
|
echo "📋 Recent logs:"
|
||
|
|
POD_NAME=$(kubectl get pods -l app=myorg-assistant -o jsonpath='{.items[0].metadata.name}')
|
||
|
|
kubectl logs $POD_NAME --tail=20
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "🎉 MyOrg Assistant is now running!"
|
||
|
|
echo ""
|
||
|
|
echo "Useful commands:"
|
||
|
|
echo " View logs: kubectl logs -f $POD_NAME"
|
||
|
|
echo " Pod shell: kubectl exec -it $POD_NAME -- /bin/bash"
|
||
|
|
echo " Restart: kubectl rollout restart deployment/myorg-assistant"
|
||
|
|
echo " Delete: kubectl delete -f k8s/"
|