refactor: Atualizar CLAUDE.md e melhorias aula-11

- CLAUDE.md: Atualizar tabela com aulas 12 (Victoria Metrics) e 13 (Container Factory)
- aula-11: Melhorias no setup do GitLab Runner
This commit is contained in:
ArgoCD Setup
2026-01-08 18:30:08 -03:00
parent 5f6f99843a
commit 97b4b50c96
4 changed files with 99 additions and 5 deletions

View File

@@ -22,6 +22,8 @@ App de demonstração: `node-bugado` - trava após N requests para demonstrar he
| 09 | n8n multi-tenant | Hetzner | | 09 | n8n multi-tenant | Hetzner |
| 10 | GitLab + Registry + SSH | Hetzner | | 10 | GitLab + Registry + SSH | Hetzner |
| 11 | ArgoCD + GitLab Runner | Hetzner | | 11 | ArgoCD + GitLab Runner | Hetzner |
| 12 | Victoria Metrics (Observabilidade) | Hetzner |
| 13 | Container Factory (eStargz) | Hetzner |
## Comandos Rápidos ## Comandos Rápidos
@@ -29,11 +31,13 @@ App de demonstração: `node-bugado` - trava após N requests para demonstrar he
# Aulas 01-06 (Local) # Aulas 01-06 (Local)
cd aula-XX && ./setup.sh # ou kubectl apply -f . cd aula-XX && ./setup.sh # ou kubectl apply -f .
# Aulas 07-11 (Hetzner) # Aulas 07-13 (Hetzner)
cd aula-08 && ./setup.sh # Cluster base cd aula-08 && ./setup.sh # Cluster base
cd aula-09 && ./setup.sh # n8n cd aula-09 && ./setup.sh # n8n
cd aula-10 && ./setup.sh # GitLab cd aula-10 && ./setup.sh # GitLab
cd aula-11 && ./setup.sh # ArgoCD cd aula-11 && ./setup.sh # ArgoCD
cd aula-12 && ./setup.sh # Victoria Metrics
cd aula-13 && ./setup.sh # Container Factory
``` ```
## App node-bugado ## App node-bugado
@@ -52,7 +56,7 @@ Demonstra:
## Variáveis de Ambiente ## Variáveis de Ambiente
- `MAX_REQUESTS`: Requests antes de travar (default: 3) - `MAX_REQUESTS`: Requests antes de travar (default: 3)
- `HCLOUD_TOKEN`: Token da Hetzner Cloud (aulas 08-11) - `HCLOUD_TOKEN`: Token da Hetzner Cloud (aulas 08-13)
## Padrões do Projeto ## Padrões do Projeto

View File

@@ -216,6 +216,39 @@ Alternativas (mais seguras, mas mais complexas):
- **Kaniko**: Build sem Docker daemon - **Kaniko**: Build sem Docker daemon
- **Buildah**: Build rootless - **Buildah**: Build rootless
### Requisitos para Docker-in-Docker
#### 1. Pod Security (Kubernetes 1.25+)
Kubernetes 1.25+ aplica Pod Security Admission por padrão. O namespace `gitlab`
precisa permitir pods privilegiados:
```bash
kubectl label namespace gitlab \
pod-security.kubernetes.io/enforce=privileged \
pod-security.kubernetes.io/warn=privileged \
--overwrite
```
> **Nota**: O `setup.sh` já configura isso automaticamente.
#### 2. Helper Image para ARM64
Em clusters com nodes ARM64 (como Hetzner CAX), o runner precisa usar
o helper image correto. Configure em `gitlab-runner-values.yaml`:
```toml
# Dentro de runners.config
[[runners]]
[runners.kubernetes]
helper_image = "gitlab/gitlab-runner-helper:arm64-latest"
```
Sem isso, você verá erros como:
```
no match for platform in manifest: not found
```
## Troubleshooting ## Troubleshooting
### ArgoCD não sincroniza ### ArgoCD não sincroniza
@@ -254,6 +287,42 @@ kubectl get pods -n gitlab
kubectl logs -n gitlab runner-xxxxx-project-xxx-concurrent-xxx kubectl logs -n gitlab runner-xxxxx-project-xxx-concurrent-xxx
``` ```
### Erro "violates PodSecurity"
```
violates PodSecurity "baseline:latest": privileged
(containers must not set securityContext.privileged=true)
```
**Solução**: Configure o namespace para permitir pods privilegiados:
```bash
kubectl label namespace gitlab \
pod-security.kubernetes.io/enforce=privileged \
--overwrite
```
### Erro "no match for platform in manifest"
```
image pull failed: no match for platform in manifest: not found
```
**Causa**: O runner está tentando usar imagem x86_64 em node ARM64.
**Solução**: Configure o helper image ARM64 no `gitlab-runner-values.yaml`:
```toml
[[runners]]
[runners.kubernetes]
helper_image = "gitlab/gitlab-runner-helper:arm64-latest"
```
Depois faça upgrade do runner:
```bash
helm upgrade gitlab-runner gitlab/gitlab-runner \
-n gitlab --reuse-values \
-f gitlab-runner-values.yaml
```
### Erro SSH ao conectar repositório ### Erro SSH ao conectar repositório
```bash ```bash

View File

@@ -56,11 +56,15 @@ runners:
image = "alpine:latest" image = "alpine:latest"
privileged = true privileged = true
# Recursos para pods de job # IMPORTANTE: Helper image para ARM64 (Hetzner CAX nodes)
# Sem isso, o runner tenta usar x86_64 e falha
helper_image = "gitlab/gitlab-runner-helper:arm64-latest"
# Recursos para pods de job (aumentados para builds Docker)
cpu_request = "100m" cpu_request = "100m"
cpu_limit = "500m" cpu_limit = "1000m"
memory_request = "256Mi" memory_request = "256Mi"
memory_limit = "512Mi" memory_limit = "1Gi"
# Timeout para pods # Timeout para pods
poll_timeout = 600 poll_timeout = 600

View File

@@ -77,6 +77,23 @@ fi
log_success "Pré-requisitos verificados" log_success "Pré-requisitos verificados"
# =============================================================================
# CONFIGURAR POD SECURITY PARA DOCKER-IN-DOCKER
# =============================================================================
#
# Docker-in-Docker requer pods privilegiados. Kubernetes 1.25+ aplica
# Pod Security Admission por padrão, bloqueando containers privilegiados
# no modo "baseline". Precisamos configurar o namespace gitlab para
# permitir pods privilegiados.
#
log_info "Configurando PodSecurity para Docker-in-Docker..."
kubectl label namespace gitlab \
pod-security.kubernetes.io/enforce=privileged \
pod-security.kubernetes.io/warn=privileged \
pod-security.kubernetes.io/audit=privileged \
--overwrite
log_success "PodSecurity configurado para permitir Docker-in-Docker"
# ============================================================================= # =============================================================================
# CARREGAR CONFIGURAÇÃO EXISTENTE # CARREGAR CONFIGURAÇÃO EXISTENTE
# ============================================================================= # =============================================================================