Files
openshift-resource-governance/deploy-to-cluster.sh

83 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# Script for deploying OpenShift Resource Governance application
# Works with any OpenShift cluster (public or private)
# Variables
IMAGE_NAME="resource-governance"
NAMESPACE="resource-governance"
IMAGE_TAG=${1:-latest} # Use first argument as tag, or 'latest' by default
echo "Deploy to OpenShift Cluster"
echo "==========================="
echo "Image: ${IMAGE_TAG}"
echo "Namespace: ${NAMESPACE}"
echo ""
# 1. Check OpenShift login
if ! oc whoami > /dev/null 2>&1; then
echo "ERROR: Not logged into OpenShift. Please login with 'oc login'."
echo "Example: oc login https://your-cluster.com"
exit 1
fi
echo "SUCCESS: Logged into OpenShift as: $(oc whoami)"
echo ""
# 2. Check if namespace exists, create if not
if ! oc get namespace ${NAMESPACE} > /dev/null 2>&1; then
echo "Creating namespace ${NAMESPACE}..."
oc create namespace ${NAMESPACE}
else
echo "SUCCESS: Namespace ${NAMESPACE} already exists"
fi
echo ""
# 3. Apply basic manifests (rbac, configmap)
echo "Applying manifests..."
oc apply -f k8s/rbac.yaml
oc apply -f k8s/configmap.yaml
echo ""
# 4. Update deployment with new image
echo "Updating deployment image..."
oc set image deployment/${IMAGE_NAME} ${IMAGE_NAME}=${IMAGE_TAG} -n ${NAMESPACE} || true
echo ""
# 5. Apply deployment, service and route
echo "Applying deployment, service and route..."
oc apply -f k8s/deployment.yaml
oc apply -f k8s/service.yaml
oc apply -f k8s/route.yaml
echo ""
# 6. Wait for rollout
echo "Waiting for rollout..."
oc rollout status deployment/${IMAGE_NAME} -n ${NAMESPACE} --timeout=300s
echo "SUCCESS: Rollout completed successfully!"
echo ""
# 7. Verify deployment
echo "Verifying deployment..."
oc get deployment ${IMAGE_NAME} -n ${NAMESPACE}
oc get pods -n ${NAMESPACE} -l app.kubernetes.io/name=${IMAGE_NAME}
echo ""
# 8. Get route URL
ROUTE_URL=$(oc get route ${IMAGE_NAME}-route -n ${NAMESPACE} -o jsonpath='{.spec.host}' 2>/dev/null || echo "")
if [ -n "$ROUTE_URL" ]; then
echo "Application deployed successfully!"
echo "URL: https://$ROUTE_URL"
echo "Status: oc get pods -n ${NAMESPACE} -l app.kubernetes.io/name=${IMAGE_NAME}"
else
echo "WARNING: Route not found. Check if cluster supports Routes."
echo "For local access: oc port-forward service/${IMAGE_NAME}-service 8080:8080 -n ${NAMESPACE}"
fi
echo ""
echo "Deploy completed!"
echo ""
echo "Useful commands:"
echo " View logs: oc logs -f deployment/${IMAGE_NAME} -n ${NAMESPACE}"
echo " Port-forward: oc port-forward service/${IMAGE_NAME}-service 8080:8080 -n ${NAMESPACE}"
echo " Status: oc get pods -n ${NAMESPACE} -l app.kubernetes.io/name=${IMAGE_NAME}"