fix(aula-14): melhorar UX do setup e corrigir instalação do Istio

- Extrair função ask_hostname para simplificar coleta de inputs
- Remover variável DOMAIN do .env (usar hosts individuais)
- Herdar domínio da aula-10 como default para hostnames
- Adicionar label PodSecurity privileged no namespace istio-system
- Usar ClusterIP no istio-ingressgateway e timeout de 10m no Helm
- Permitir edição do email Let's Encrypt quando já configurado
This commit is contained in:
ArgoCD Setup
2026-03-14 13:26:41 -03:00
parent f5cb6f0581
commit 62365e02a5

View File

@@ -59,7 +59,6 @@ save_config() {
REGISTRY_HOST=${REGISTRY_HOST} REGISTRY_HOST=${REGISTRY_HOST}
REGISTRY_PROJECT=${REGISTRY_PROJECT} REGISTRY_PROJECT=${REGISTRY_PROJECT}
DOMAIN=${DOMAIN}
APP_HOST=${APP_HOST} APP_HOST=${APP_HOST}
KIALI_HOST=${KIALI_HOST} KIALI_HOST=${KIALI_HOST}
JAEGER_HOST=${JAEGER_HOST} JAEGER_HOST=${JAEGER_HOST}
@@ -71,6 +70,20 @@ EOF
log_success "Configuração salva em .env" log_success "Configuração salva em .env"
} }
ask_hostname() {
local label="$1" current="$2" default="$3"
local value="${current:-$default}"
if [[ -n "$value" ]]; then
echo -e "${label}: ${GREEN}${value}${NC}" >&2
read -p "Enter para confirmar ou digite novo valor: " new_value
[[ -n "$new_value" ]] && value="$new_value"
else
read -p "${label}: " value
fi
echo "$value"
}
collect_user_input() { collect_user_input() {
echo "" echo ""
echo -e "${CYAN}═══════════════════════════════════════════════════════════${NC}" echo -e "${CYAN}═══════════════════════════════════════════════════════════${NC}"
@@ -93,25 +106,20 @@ collect_user_input() {
fi fi
fi fi
# Herdar defaults da aula-10
local INHERITED_DOMAIN=""
if [[ -f "$AULA10_ENV" ]]; then if [[ -f "$AULA10_ENV" ]]; then
source "$AULA10_ENV" source "$AULA10_ENV"
INHERITED_DOMAIN="${DOMAIN}"
log_info "Configuração herdada da aula-10" log_info "Configuração herdada da aula-10"
fi fi
if [[ -z "$DOMAIN" ]]; then echo ""
read -p "Domínio base (ex: kube.quest): " DOMAIN REGISTRY_HOST=$(ask_hostname "Registry" "$REGISTRY_HOST" "reg.${INHERITED_DOMAIN}")
else echo ""
echo -e "Domínio: ${GREEN}${DOMAIN}${NC}" APP_HOST=$(ask_hostname "App" "$APP_HOST" "app.${INHERITED_DOMAIN}")
read -p "Enter para confirmar ou digite novo valor: " new_domain KIALI_HOST=$(ask_hostname "Kiali" "$KIALI_HOST" "kiali.${INHERITED_DOMAIN}")
[[ -n "$new_domain" ]] && DOMAIN="$new_domain" JAEGER_HOST=$(ask_hostname "Jaeger" "$JAEGER_HOST" "jaeger.${INHERITED_DOMAIN}")
fi
if [[ -z "$REGISTRY_HOST" ]]; then
REGISTRY_HOST="reg.${DOMAIN}"
fi
echo -e "Registry: ${GREEN}${REGISTRY_HOST}${NC}"
read -p "Enter para confirmar ou digite novo valor: " new_reg
[[ -n "$new_reg" ]] && REGISTRY_HOST="$new_reg"
# Owner/repo no Gitea para o registry (ex: root, demo, factory) # Owner/repo no Gitea para o registry (ex: root, demo, factory)
if [[ -z "$REGISTRY_PROJECT" ]]; then if [[ -z "$REGISTRY_PROJECT" ]]; then
@@ -124,29 +132,17 @@ collect_user_input() {
read -p "Grupo/projeto [${REGISTRY_PROJECT}]: " new_project read -p "Grupo/projeto [${REGISTRY_PROJECT}]: " new_project
[[ -n "$new_project" ]] && REGISTRY_PROJECT="$new_project" [[ -n "$new_project" ]] && REGISTRY_PROJECT="$new_project"
APP_HOST="${APP_HOST:-app.${DOMAIN}}"
KIALI_HOST="${KIALI_HOST:-kiali.${DOMAIN}}"
JAEGER_HOST="${JAEGER_HOST:-jaeger.${DOMAIN}}"
echo ""
echo -e "Hosts para serviços:"
echo -e " App: ${GREEN}${APP_HOST}${NC}"
echo -e " Kiali: ${GREEN}${KIALI_HOST}${NC}"
echo -e " Jaeger: ${GREEN}${JAEGER_HOST}${NC}"
read -p "Enter para confirmar ou 'n' para personalizar: " confirm
if [[ "$confirm" == "n" ]]; then
read -p "Host do App: " APP_HOST
read -p "Host do Kiali: " KIALI_HOST
read -p "Host do Jaeger: " JAEGER_HOST
fi
echo "" echo ""
echo -e "[1] Usar Let's Encrypt (HTTPS)" echo -e "[1] Usar Let's Encrypt (HTTPS)"
echo -e "[2] Sem TLS (HTTP)" echo -e "[2] Sem TLS (HTTP)"
read -p "Escolha [1/2]: " tls_choice read -p "Escolha [1/2]: " tls_choice
if [[ "$tls_choice" == "1" ]]; then if [[ "$tls_choice" == "1" ]]; then
USE_LETSENCRYPT=true USE_LETSENCRYPT=true
if [[ -z "$LETSENCRYPT_EMAIL" ]]; then if [[ -n "$LETSENCRYPT_EMAIL" ]]; then
echo -e "Email Let's Encrypt: ${GREEN}${LETSENCRYPT_EMAIL}${NC}"
read -p "Enter para confirmar ou digite novo valor: " new_email
[[ -n "$new_email" ]] && LETSENCRYPT_EMAIL="$new_email"
else
read -p "Email para Let's Encrypt: " LETSENCRYPT_EMAIL read -p "Email para Let's Encrypt: " LETSENCRYPT_EMAIL
fi fi
else else
@@ -232,6 +228,10 @@ install_istio() {
helm repo update istio helm repo update istio
kubectl create namespace istio-system 2>/dev/null || true kubectl create namespace istio-system 2>/dev/null || true
kubectl label namespace istio-system \
pod-security.kubernetes.io/enforce=privileged \
pod-security.kubernetes.io/warn=privileged \
--overwrite 2>/dev/null || true
log_info "Instalando istio-base..." log_info "Instalando istio-base..."
if helm status istio-base -n istio-system &> /dev/null; then if helm status istio-base -n istio-system &> /dev/null; then
@@ -243,9 +243,9 @@ install_istio() {
log_info "Instalando istiod..." log_info "Instalando istiod..."
if helm status istiod -n istio-system &> /dev/null; then if helm status istiod -n istio-system &> /dev/null; then
helm upgrade istiod istio/istiod -n istio-system --wait helm upgrade istiod istio/istiod -n istio-system --wait --timeout=10m
else else
helm install istiod istio/istiod -n istio-system --wait helm install istiod istio/istiod -n istio-system --wait --timeout=10m
fi fi
log_success "istiod instalado" log_success "istiod instalado"
@@ -254,10 +254,11 @@ install_istio() {
log_success "istiod pronto" log_success "istiod pronto"
log_info "Instalando istio-ingressgateway..." log_info "Instalando istio-ingressgateway..."
local GW_ARGS="--set service.type=ClusterIP"
if helm status istio-ingressgateway -n istio-system &> /dev/null; then if helm status istio-ingressgateway -n istio-system &> /dev/null; then
helm upgrade istio-ingressgateway istio/gateway -n istio-system --wait helm upgrade istio-ingressgateway istio/gateway -n istio-system $GW_ARGS --wait --timeout=10m
else else
helm install istio-ingressgateway istio/gateway -n istio-system --wait helm install istio-ingressgateway istio/gateway -n istio-system $GW_ARGS --wait --timeout=10m
fi fi
log_success "istio-ingressgateway instalado" log_success "istio-ingressgateway instalado"