Fix: GitHub Actions for public clusters + deployment guide for colleagues
This commit is contained in:
82
deploy-to-cluster.sh
Executable file
82
deploy-to-cluster.sh
Executable 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}"
|
||||
Reference in New Issue
Block a user