refactor: remover todas as dependências do GitLab no workshop
- Aula 08: nginx-ingress TCP passthrough gitlab→gitea, comments
- Aula 09: add-client.sh API GitLab→Gitea
- Aula 11: node-bugado deployment image registry.kube.quest→gitea.kube.quest
- Aula 12: setup.sh/cleanup.sh API GitLab→Gitea, ArgoCD repoURL
- Aula 13: k8s manifests, benchmarks: registry.kube.quest→gitea.kube.quest,
gitlab-registry→gitea-registry, GITLAB_TOKEN→GITEA_TOKEN
- Aula 14: comments GitLab→Gitea
- README raiz: arquitetura, tabela, DNS
This commit is contained in:
@@ -58,7 +58,7 @@ Victoria Metrics oferece **compatibilidade total** com Prometheus, mas com vanta
|
||||
|
||||
- Cluster Kubernetes Hetzner (aula-08)
|
||||
- ArgoCD instalado (aula-11)
|
||||
- GitLab com grupo `factory` (aula-11)
|
||||
- Gitea com org `factory` (aula-11)
|
||||
|
||||
## Estrutura
|
||||
|
||||
@@ -68,7 +68,7 @@ aula-12/
|
||||
├── setup.sh # Instalação automatizada
|
||||
├── cleanup.sh # Remoção via ArgoCD
|
||||
│
|
||||
├── gitops/ # Conteúdo para GitLab
|
||||
├── gitops/ # Conteúdo para Gitea
|
||||
│ └── apps/
|
||||
│ └── victoria-metrics/
|
||||
│ ├── Chart.yaml # Helm chart wrapper
|
||||
@@ -96,7 +96,7 @@ cd aula-12
|
||||
```
|
||||
|
||||
O script:
|
||||
1. Cria projeto `factory/monitoring` no GitLab
|
||||
1. Cria repositório `factory/monitoring` no Gitea
|
||||
2. Faz push dos manifests GitOps
|
||||
3. Cria namespace `monitoring`
|
||||
4. Aplica ArgoCD Application
|
||||
@@ -106,8 +106,8 @@ O script:
|
||||
|
||||
```
|
||||
┌──────────────────┐ push ┌──────────────────┐
|
||||
│ aula-12/ │ ──────────► │ factory/monitoring│
|
||||
│ gitops/ │ │ (GitLab) │
|
||||
│ aula-12/ │ ──────────► │factory/monitoring │
|
||||
│ gitops/ │ │ (Gitea) │
|
||||
└──────────────────┘ └────────┬─────────┘
|
||||
│
|
||||
sync │
|
||||
@@ -494,7 +494,7 @@ vmsingle:
|
||||
O script remove:
|
||||
1. ArgoCD Application
|
||||
2. Namespace `monitoring`
|
||||
3. Projeto GitLab (opcional)
|
||||
3. Repositório Gitea (opcional)
|
||||
|
||||
**Nota**: Dados de métricas serão perdidos!
|
||||
|
||||
|
||||
@@ -19,8 +19,8 @@ spec:
|
||||
project: default
|
||||
|
||||
source:
|
||||
# URL do repositório GitLab (ajustar conforme seu domínio)
|
||||
repoURL: https://git.kube.quest/factory/monitoring.git
|
||||
# URL do repositório Gitea (ajustar conforme seu domínio)
|
||||
repoURL: https://gitea.kube.quest/factory/monitoring.git
|
||||
targetRevision: HEAD
|
||||
path: apps/victoria-metrics
|
||||
|
||||
|
||||
@@ -110,28 +110,24 @@ else
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
# REMOVER PROJETO GITLAB (OPCIONAL)
|
||||
# REMOVER REPOSITÓRIO GITEA (OPCIONAL)
|
||||
# =============================================================================
|
||||
|
||||
if [[ -n "$GITLAB_HOST" && -n "$GITLAB_TOKEN" ]]; then
|
||||
if [[ -n "$GITEA_HOST" && -n "$GITEA_TOKEN" ]]; then
|
||||
echo ""
|
||||
read -p "Remover projeto 'factory/monitoring' do GitLab? [y/N]: " REMOVE_PROJECT
|
||||
read -p "Remover repositório 'factory/monitoring' do Gitea? [y/N]: " REMOVE_PROJECT
|
||||
|
||||
if [[ "$REMOVE_PROJECT" == "y" || "$REMOVE_PROJECT" == "Y" ]]; then
|
||||
log_info "Removendo projeto do GitLab..."
|
||||
log_info "Removendo repositório do Gitea..."
|
||||
|
||||
# Obter ID do projeto
|
||||
PROJECT_RESPONSE=$(curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
|
||||
"https://${GITLAB_HOST}/api/v4/projects/factory%2Fmonitoring")
|
||||
DELETE_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" --request DELETE \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
"https://${GITEA_HOST}/api/v1/repos/factory/monitoring")
|
||||
|
||||
PROJECT_ID=$(echo "$PROJECT_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
|
||||
|
||||
if [[ -n "$PROJECT_ID" ]]; then
|
||||
curl -s --request DELETE --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
|
||||
"https://${GITLAB_HOST}/api/v4/projects/${PROJECT_ID}"
|
||||
log_success "Projeto removido do GitLab"
|
||||
if [[ "$DELETE_RESPONSE" == "204" ]]; then
|
||||
log_success "Repositório removido do Gitea"
|
||||
else
|
||||
log_info "Projeto não encontrado no GitLab"
|
||||
log_info "Repositório não encontrado no Gitea (HTTP ${DELETE_RESPONSE})"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
122
aula-12/setup.sh
122
aula-12/setup.sh
@@ -4,7 +4,7 @@
|
||||
# =============================================================================
|
||||
#
|
||||
# Este script instala Victoria Metrics stack usando ArgoCD (GitOps):
|
||||
# 1. Cria projeto 'factory/monitoring' no GitLab
|
||||
# 1. Cria projeto 'factory/monitoring' no Gitea
|
||||
# 2. Push dos manifests GitOps
|
||||
# 3. Cria ArgoCD Application
|
||||
# 4. Victoria Metrics + Grafana são sincronizados automaticamente
|
||||
@@ -12,7 +12,7 @@
|
||||
# Pré-requisitos:
|
||||
# - Cluster Kubernetes (aula-08)
|
||||
# - ArgoCD instalado (aula-11)
|
||||
# - GitLab com grupo 'factory' (aula-10/11)
|
||||
# - Gitea com org 'factory' (aula-10/11)
|
||||
#
|
||||
# =============================================================================
|
||||
|
||||
@@ -117,15 +117,15 @@ echo " Configuração Victoria Metrics (GitOps)"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# GitLab Host
|
||||
if [[ -z "$GITLAB_HOST" ]]; then
|
||||
read -p "Hostname do GitLab (ex: git.kube.quest): " GITLAB_HOST
|
||||
# Gitea Host
|
||||
if [[ -z "$GITEA_HOST" ]]; then
|
||||
read -p "Hostname do Gitea (ex: gitea.kube.quest): " GITEA_HOST
|
||||
fi
|
||||
log_info "GitLab: https://${GITLAB_HOST}"
|
||||
log_info "Gitea: https://${GITEA_HOST}"
|
||||
|
||||
# Extrair domínio base
|
||||
if [[ -z "$DOMAIN" ]]; then
|
||||
DOMAIN=$(echo "$GITLAB_HOST" | sed 's/^[^.]*\.//')
|
||||
DOMAIN=$(echo "$GITEA_HOST" | sed 's/^[^.]*\.//')
|
||||
fi
|
||||
|
||||
# Grafana Host
|
||||
@@ -136,14 +136,14 @@ if [[ -z "$GRAFANA_HOST" ]]; then
|
||||
fi
|
||||
log_info "Grafana: https://${GRAFANA_HOST}"
|
||||
|
||||
# GitLab Token (para criar projeto via API)
|
||||
if [[ -z "$GITLAB_TOKEN" ]]; then
|
||||
# Gitea Token (para criar projeto via API)
|
||||
if [[ -z "$GITEA_TOKEN" ]]; then
|
||||
echo ""
|
||||
echo "Token de acesso GitLab (para criar projeto via API):"
|
||||
echo " 1. Acesse https://${GITLAB_HOST}/-/user_settings/personal_access_tokens"
|
||||
echo " 2. Crie um token com scope 'api'"
|
||||
echo "Token de acesso Gitea (para criar repositório via API):"
|
||||
echo " 1. Acesse https://${GITEA_HOST}/user/settings/applications"
|
||||
echo " 2. Crie um token com permissões de escrita"
|
||||
echo ""
|
||||
read -p "GitLab Token: " GITLAB_TOKEN
|
||||
read -p "Gitea Token: " GITEA_TOKEN
|
||||
fi
|
||||
|
||||
# TLS (herdar da aula-11)
|
||||
@@ -166,72 +166,73 @@ fi
|
||||
cat > "$ENV_FILE" << EOF
|
||||
# Configuração gerada pelo setup.sh
|
||||
# $(date)
|
||||
GITLAB_HOST=${GITLAB_HOST}
|
||||
GITEA_HOST=${GITEA_HOST}
|
||||
GRAFANA_HOST=${GRAFANA_HOST}
|
||||
DOMAIN=${DOMAIN}
|
||||
USE_CLOUDFLARE=${USE_CLOUDFLARE}
|
||||
USE_LETSENCRYPT=${USE_LETSENCRYPT}
|
||||
GITLAB_TOKEN=${GITLAB_TOKEN}
|
||||
GITEA_TOKEN=${GITEA_TOKEN}
|
||||
EOF
|
||||
|
||||
log_success "Configuração salva em ${ENV_FILE}"
|
||||
|
||||
# =============================================================================
|
||||
# CRIAR PROJETO NO GITLAB (VIA API)
|
||||
# CRIAR REPOSITÓRIO NO GITEA (VIA API)
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
log_info "=== Criando Projeto no GitLab ==="
|
||||
log_info "=== Criando Repositório no Gitea ==="
|
||||
|
||||
# Verificar se grupo factory existe
|
||||
log_info "Verificando grupo 'factory'..."
|
||||
GROUP_RESPONSE=$(curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
|
||||
"https://${GITLAB_HOST}/api/v4/groups?search=factory")
|
||||
# Verificar se org factory existe
|
||||
log_info "Verificando organização 'factory'..."
|
||||
ORG_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
"https://${GITEA_HOST}/api/v1/orgs/factory")
|
||||
|
||||
GROUP_ID=$(echo "$GROUP_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
|
||||
if [[ "$ORG_RESPONSE" != "200" ]]; then
|
||||
log_info "Criando organização 'factory'..."
|
||||
ORG_CREATE=$(curl -s --request POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data '{"username": "factory", "visibility": "limited"}' \
|
||||
"https://${GITEA_HOST}/api/v1/orgs")
|
||||
|
||||
if [[ -z "$GROUP_ID" ]]; then
|
||||
log_info "Criando grupo 'factory'..."
|
||||
GROUP_CREATE=$(curl -s --request POST --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
|
||||
--header "Content-Type: application/json" \
|
||||
--data '{"name": "factory", "path": "factory", "visibility": "internal"}' \
|
||||
"https://${GITLAB_HOST}/api/v4/groups")
|
||||
GROUP_ID=$(echo "$GROUP_CREATE" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
|
||||
ORG_NAME=$(echo "$ORG_CREATE" | grep -o '"username":"factory"' || true)
|
||||
|
||||
if [[ -z "$GROUP_ID" ]]; then
|
||||
log_error "Falha ao criar grupo 'factory'"
|
||||
log_info "Crie manualmente em https://${GITLAB_HOST}/admin/groups/new"
|
||||
if [[ -z "$ORG_NAME" ]]; then
|
||||
log_error "Falha ao criar organização 'factory'"
|
||||
echo "$ORG_CREATE"
|
||||
exit 1
|
||||
fi
|
||||
log_success "Grupo 'factory' criado (ID: ${GROUP_ID})"
|
||||
log_success "Organização 'factory' criada"
|
||||
else
|
||||
log_success "Grupo 'factory' já existe (ID: ${GROUP_ID})"
|
||||
log_success "Organização 'factory' já existe"
|
||||
fi
|
||||
|
||||
# Verificar se projeto monitoring existe
|
||||
log_info "Verificando projeto 'monitoring'..."
|
||||
PROJECT_RESPONSE=$(curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
|
||||
"https://${GITLAB_HOST}/api/v4/projects?search=monitoring")
|
||||
# Verificar se repositório monitoring existe
|
||||
log_info "Verificando repositório 'monitoring'..."
|
||||
REPO_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
"https://${GITEA_HOST}/api/v1/repos/factory/monitoring")
|
||||
|
||||
PROJECT_EXISTS=$(echo "$PROJECT_RESPONSE" | grep -o '"path_with_namespace":"factory/monitoring"' || true)
|
||||
if [[ "$REPO_RESPONSE" != "200" ]]; then
|
||||
log_info "Criando repositório 'monitoring'..."
|
||||
REPO_CREATE=$(curl -s --request POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data '{"name": "monitoring", "private": false, "auto_init": false}' \
|
||||
"https://${GITEA_HOST}/api/v1/orgs/factory/repos")
|
||||
|
||||
if [[ -z "$PROJECT_EXISTS" ]]; then
|
||||
log_info "Criando projeto 'monitoring'..."
|
||||
PROJECT_CREATE=$(curl -s --request POST --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
|
||||
--header "Content-Type: application/json" \
|
||||
--data "{\"name\": \"monitoring\", \"namespace_id\": ${GROUP_ID}, \"visibility\": \"internal\", \"initialize_with_readme\": false}" \
|
||||
"https://${GITLAB_HOST}/api/v4/projects")
|
||||
REPO_NAME=$(echo "$REPO_CREATE" | grep -o '"name":"monitoring"' || true)
|
||||
|
||||
PROJECT_ID=$(echo "$PROJECT_CREATE" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
|
||||
|
||||
if [[ -z "$PROJECT_ID" ]]; then
|
||||
log_error "Falha ao criar projeto 'monitoring'"
|
||||
echo "$PROJECT_CREATE"
|
||||
if [[ -z "$REPO_NAME" ]]; then
|
||||
log_error "Falha ao criar repositório 'monitoring'"
|
||||
echo "$REPO_CREATE"
|
||||
exit 1
|
||||
fi
|
||||
log_success "Projeto 'monitoring' criado (ID: ${PROJECT_ID})"
|
||||
log_success "Repositório 'monitoring' criado"
|
||||
else
|
||||
log_success "Projeto 'monitoring' já existe"
|
||||
log_success "Repositório 'monitoring' já existe"
|
||||
fi
|
||||
|
||||
# =============================================================================
|
||||
@@ -253,7 +254,8 @@ git config --global user.name "ArgoCD Setup" 2>/dev/null || true
|
||||
|
||||
# Clone do repositório (usando token)
|
||||
log_info "Clonando repositório..."
|
||||
GIT_URL="https://oauth2:${GITLAB_TOKEN}@${GITLAB_HOST}/factory/monitoring.git"
|
||||
GITEA_USER=$(curl -s -H "Authorization: token ${GITEA_TOKEN}" "https://${GITEA_HOST}/api/v1/user" | grep -o '"login":"[^"]*"' | cut -d'"' -f4)
|
||||
GIT_URL="https://${GITEA_USER}:${GITEA_TOKEN}@${GITEA_HOST}/factory/monitoring.git"
|
||||
|
||||
if ! git clone "${GIT_URL}" monitoring 2>/dev/null; then
|
||||
# Repositório vazio, inicializar
|
||||
@@ -282,12 +284,12 @@ if git diff --cached --quiet; then
|
||||
log_info "Nenhuma mudança para commit"
|
||||
else
|
||||
git commit -m "feat: Victoria Metrics stack configuration"
|
||||
log_info "Pushing para GitLab..."
|
||||
log_info "Pushing para Gitea..."
|
||||
git push -u origin main 2>/dev/null || git push -u origin master 2>/dev/null || {
|
||||
# Primeiro push em repo vazio
|
||||
git push --set-upstream origin main 2>/dev/null || git push --set-upstream origin master
|
||||
}
|
||||
log_success "Manifests enviados para GitLab"
|
||||
log_success "Manifests enviados para Gitea"
|
||||
fi
|
||||
|
||||
cd "${SCRIPT_DIR}"
|
||||
@@ -321,9 +323,9 @@ metadata:
|
||||
argocd.argoproj.io/secret-type: repository
|
||||
stringData:
|
||||
type: git
|
||||
url: https://${GITLAB_HOST}/factory/monitoring.git
|
||||
username: oauth2
|
||||
password: ${GITLAB_TOKEN}
|
||||
url: https://${GITEA_HOST}/factory/monitoring.git
|
||||
username: ${GITEA_USER}
|
||||
password: ${GITEA_TOKEN}
|
||||
EOF
|
||||
|
||||
log_success "Repositório configurado no ArgoCD"
|
||||
@@ -353,7 +355,7 @@ metadata:
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: https://${GITLAB_HOST}/factory/monitoring.git
|
||||
repoURL: https://${GITEA_HOST}/factory/monitoring.git
|
||||
targetRevision: HEAD
|
||||
path: apps/victoria-metrics
|
||||
helm:
|
||||
@@ -458,7 +460,7 @@ echo "Pods:"
|
||||
echo " kubectl get pods -n monitoring"
|
||||
echo ""
|
||||
echo "GitOps Repository:"
|
||||
echo " https://${GITLAB_HOST}/factory/monitoring"
|
||||
echo " https://${GITEA_HOST}/factory/monitoring"
|
||||
echo ""
|
||||
echo "Verificar métricas:"
|
||||
echo " kubectl port-forward -n monitoring svc/vmsingle-vm 8429:8429"
|
||||
|
||||
Reference in New Issue
Block a user