Fix: GitHub Actions for public clusters + deployment guide for colleagues

This commit is contained in:
2025-09-25 18:26:05 -03:00
parent 66a5bb116f
commit 9f8cdbda7a
7 changed files with 549 additions and 11 deletions

82
deploy-to-cluster.sh Executable file
View File

@@ -0,0 +1,82 @@
#!/bin/bash
# Script para deploy da aplicação OpenShift Resource Governance
# Funciona com qualquer cluster OpenShift (público ou privado)
# Variáveis
IMAGE_NAME="resource-governance"
NAMESPACE="resource-governance"
IMAGE_TAG=${1:-latest} # Usa o primeiro argumento como tag, ou 'latest' por padrão
echo "🚀 Deploy para OpenShift Cluster"
echo "================================"
echo "Imagem: ${IMAGE_TAG}"
echo "Namespace: ${NAMESPACE}"
echo ""
# 1. Verificar login no OpenShift
if ! oc whoami > /dev/null 2>&1; then
echo "❌ Não logado no OpenShift. Por favor, faça login com 'oc login'."
echo "💡 Exemplo: oc login https://your-cluster.com"
exit 1
fi
echo "✅ Logado no OpenShift como: $(oc whoami)"
echo ""
# 2. Verificar se o namespace existe, senão criar
if ! oc get namespace ${NAMESPACE} > /dev/null 2>&1; then
echo "📋 Criando namespace ${NAMESPACE}..."
oc create namespace ${NAMESPACE}
else
echo "✅ Namespace ${NAMESPACE} já existe"
fi
echo ""
# 3. Aplicar manifests básicos (rbac, configmap)
echo "📋 Aplicando manifests..."
oc apply -f k8s/rbac.yaml
oc apply -f k8s/configmap.yaml
echo ""
# 4. Atualizar deployment com a nova imagem
echo "🔄 Atualizando imagem do deployment..."
oc set image deployment/${IMAGE_NAME} ${IMAGE_NAME}=${IMAGE_TAG} -n ${NAMESPACE} || true
echo ""
# 5. Aplicar deployment, service e route
echo "📦 Aplicando deployment, service e route..."
oc apply -f k8s/deployment.yaml
oc apply -f k8s/service.yaml
oc apply -f k8s/route.yaml
echo ""
# 6. Aguardar rollout
echo "⏳ Aguardando rollout..."
oc rollout status deployment/${IMAGE_NAME} -n ${NAMESPACE} --timeout=300s
echo "✅ Rollout concluído com sucesso!"
echo ""
# 7. Verificar deployment
echo "✅ Verificando deployment..."
oc get deployment ${IMAGE_NAME} -n ${NAMESPACE}
oc get pods -n ${NAMESPACE} -l app.kubernetes.io/name=${IMAGE_NAME}
echo ""
# 8. Obter URL da rota
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 "⚠️ Rota não encontrada. Verifique se o cluster suporta Routes."
echo "💡 Para acessar localmente: oc port-forward service/${IMAGE_NAME}-service 8080:8080 -n ${NAMESPACE}"
fi
echo ""
echo "✅ Deploy concluído!"
echo ""
echo "🔧 Comandos úteis:"
echo " Ver 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}"