From 2441bf4541180c2cdfee1ad0dcdd1b0d2255944d Mon Sep 17 00:00:00 2001 From: ArgoCD Setup Date: Sat, 14 Mar 2026 02:56:32 -0300 Subject: [PATCH] =?UTF-8?q?docs(aula-10):=20documentar=20storage=20S3=20co?= =?UTF-8?q?mo=20op=C3=A7=C3=A3o=20(default=20permanece=20disco=20local)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aula-10/README.md | 75 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/aula-10/README.md b/aula-10/README.md index 1859f91..eedb6d0 100644 --- a/aula-10/README.md +++ b/aula-10/README.md @@ -329,6 +329,81 @@ helm upgrade gitea gitea-charts/gitea -n gitea \ | LoadBalancer (compartilhado) | ~$1.80 (1/3) | | **Total** | **~$7.65** | +## Storage: Disco Local vs S3 (Object Storage) + +Por padrão, o Gitea armazena tudo em **disco local** (PVC). Isso é simples e funciona pro workshop. Mas em produção com muitas imagens Docker, o PVC de 10Gi enche rápido. + +O Gitea suporta **S3-compatible storage** (MinIO, AWS S3, Hetzner Object Storage, etc.) como backend para **tudo**: container images, LFS, avatars, attachments, actions artifacts. + +### O que usamos (default) + +``` +Gitea Pod → PVC 10Gi (hcloud-volumes) + ├── /data/git/repositories (código) + ├── /data/gitea/packages (container images) + ├── /data/gitea/lfs (large files) + └── /data/gitea/avatars (fotos) +``` + +Simples, sem dependências externas. Suficiente pra clusters pequenos. + +### Quando migrar pra S3 + +- PVC passando de 80% (o pvc-autoresizer da aula-12 ajuda, mas tem limite) +- Muitas imagens Docker grandes (container registry crescendo) +- Precisa de storage "ilimitado" sem gerenciar volumes + +### Como configurar S3 (Hetzner Object Storage) + +1. Criar bucket no [Hetzner Cloud Console](https://console.hetzner.cloud) → Object Storage +2. Gerar Access Key + Secret Key +3. Adicionar no `gitea-values.yaml`: + +```yaml +gitea: + config: + storage: + STORAGE_TYPE: minio + MINIO_ENDPOINT: nbg1.your-objectstorage.com + MINIO_ACCESS_KEY_ID: "sua-access-key" + MINIO_SECRET_ACCESS_KEY: "sua-secret-key" + MINIO_BUCKET: gitea + MINIO_LOCATION: nbg1 + MINIO_USE_SSL: "true" + SERVE_DIRECT: "true" +``` + +4. `helm upgrade` pra aplicar + +Com `SERVE_DIRECT: true`, o Gitea redireciona `docker pull` direto pro S3 — menos carga na CPU, downloads mais rápidos. + +### Ou só pra packages (container images) + +Se quiser manter repos git em disco local mas imagens no S3: + +```yaml +gitea: + config: + storage.packages: + STORAGE_TYPE: minio + MINIO_ENDPOINT: nbg1.your-objectstorage.com + MINIO_ACCESS_KEY_ID: "sua-access-key" + MINIO_SECRET_ACCESS_KEY: "sua-secret-key" + MINIO_BUCKET: gitea + MINIO_USE_SSL: "true" + MINIO_BASE_PATH: "packages/" + SERVE_DIRECT: "true" +``` + +### Custo S3 vs PVC + +| Storage | Custo | Limite | +|---------|-------|--------| +| PVC (Hetzner Volume) | ~$0.048/GB/mês | 10TB max | +| Hetzner Object Storage | ~€0.006/GB/mês (~8x mais barato) | Ilimitado | + +**Para o workshop usamos PVC** — zero configuração extra, zero secrets de S3. + ## Lições do Workshop 1. **Nem sempre precisa da ferramenta "enterprise"** — Gitea substitui GitLab + Harbor + parcialmente Tekton com 10x menos recursos